SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Deine Leidenschaft ist die Unterwasserfoto-grafie?


Dann ist Qozido genau das Richtige für Dich!

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler ist da!

www.qozido.de

 


Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 27.05.2012, 15:46:52
phury phury ist offline
Anfänger
 
Registriert seit: May 2012
Beiträge: 6
phury befindet sich auf einem aufstrebenden Ast
Fehler mit PDO::prepare() / non-object

Liebe Community,

ich rätsel mittlerweile seit Stunden an folgendem Problem. Als Warnung vorab: Ich bin blutiger Anfänger in php. Also bitte nicht böse sein, wenns mal bisschen dauert ;)

PHP-Code:
<?php
  $suchbegriff 
$_GET["q1"] . '%';
  
$tabelle $_GET["q2"];
  
$feld $_GET["q3"];

  
$result NULL;
  
$sql "SELECT * FROM (?) WHERE (?) LIKE (?)";
  
$dbh = new PDO('sqlite:../db/db_schulung.sqlite');

  
$dbh->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_WARNING);

  
$query $dbh->prepare($sql);
  
$query->execute(array($tabelle$feld$suchbegriff));


  do{
      
$result $query->fetch(PDO::FETCH_ASSOC);
      if (
$result != NULL)
      
print_r ($result);

  } while (
$result != NULL);

  
$dbh null;
?>
Als Fehlerausgabe bekomme ich:
Warning: PDO::prepare() [pdo.prepare]: SQLSTATE[HY000]: General error: 1 near "?": syntax error in ...\livesearch.php on line 12
Fatal error: Call to a member function execute() on a non-object in ...\livesearch.php on line 13

Was mich stutzig macht ist, dass in vorherigen (ähnlichen) Versuchen das Ganze ohne weiteres geklappt hat.
Mit Zitat antworten
  #2  
Alt 27.05.2012, 16:31:15
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.208
vt1816 befindet sich auf einem aufstrebenden Ast
vt1816 eine Nachricht über Skype™ schicken
AW: Fehler mit PDO::prepare() / non-object

Zitat:
Zitat von phury Beitrag anzeigen
Liebe Community,
Hallo und willkommen hier im Forum.


Zitat:
Zitat von phury Beitrag anzeigen
PHP-Code:
<?php
  $suchbegriff 
$_GET["q1"] . '%';
  
$tabelle $_GET["q2"];
  
$feld $_GET["q3"];

  
$result NULL;
  
$sql "SELECT * FROM (?) WHERE (?) LIKE (?)";
?>
Was soll "(?)" machen? Solltest Du dort nicht die entsprechend benötigten Werte einsetzten?
__________________
Gruss vt1816


Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3  
Alt 27.05.2012, 17:17:19
phury phury ist offline
Anfänger
 
Registriert seit: May 2012
Beiträge: 6
phury befindet sich auf einem aufstrebenden Ast
AW: Fehler mit PDO::prepare() / non-object

Zitat:
Hallo und willkommen hier im Forum.
Dankeschön ;)

Ja ... also die Fragezeichen stehen als Platzhalter für die 3 Werte,
die in der Methode execute als Parameter (zusammengefasst als array) übergeben werden.

Laut http://www.php.net/manual/de/pdostatement.execute.php (Bsp. 3) sollte das auch funktionieren.
(Die anderen Herangehensweisen habe ich schon mit gleichem Ergebnis ausprobiert.)
Mit Zitat antworten
  #4  
Alt 27.05.2012, 17:29:19
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.208
vt1816 befindet sich auf einem aufstrebenden Ast
vt1816 eine Nachricht über Skype™ schicken
AW: Fehler mit PDO::prepare() / non-object

Zitat:
Zitat von phury Beitrag anzeigen
PHP-Code:
<?php
...
  
$dbh = new PDO('sqlite:../db/db_schulung.sqlite');

?>
Nur das Du PDO und nicht PDOStatment benutzt!
__________________
Gruss vt1816


Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #5  
Alt 27.05.2012, 21:18:13
phury phury ist offline
Anfänger
 
Registriert seit: May 2012
Beiträge: 6
phury befindet sich auf einem aufstrebenden Ast
AW: Fehler mit PDO::prepare() / non-object

Hmm, viel hat mir das jetzt nicht geholfen.

Wie auch immer ...
Ich habe das Problem gelöst, indem ich
  • erstens das SQL-Statement mit den Parametern in einer Variable $sql abgelegt
  • und zweitens statt prepare() und execute() direkt query($sql) verwendet habe.

PHP-Code:
$sql "SELECT * FROM ".$tabelle." WHERE ".$feld." LIKE '".$suchbegriff."%'";
$menge $dbh->query($sql); 
Mit Zitat antworten
  #6  
Alt 27.05.2012, 21:22:40
Benutzerbild von meikel
meikel meikel ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 66
Beiträge: 4.001
meikel befindet sich auf einem aufstrebenden Ast
AW: Fehler mit PDO::prepare() / non-object

Zitat:
Zitat von phury Beitrag anzeigen
Ja ... also die Fragezeichen stehen als Platzhalter für die 3 Werte,
Ja, aber seit wann wird der Tabellenbezeichner geklammert?
Mit Zitat antworten
  #7  
Alt 27.05.2012, 21:33:06
phury phury ist offline
Anfänger
 
Registriert seit: May 2012
Beiträge: 6
phury befindet sich auf einem aufstrebenden Ast
AW: Fehler mit PDO::prepare() / non-object

Zitat:
Ja, aber seit wann wird der Tabellenbezeichner geklammert?
Ich hatte das wohl in dem Versuch das Problem zu lösen irgendwo gesehen, ausprobiert und danach nicht mehr rückgängig gemacht.
Wo das war kann ich nicht mehr sagen. Ich dachte eben, dass das zu der "Ersetzung" gehört.
Mit Zitat antworten
  #8  
Alt 27.05.2012, 21:44:13
Benutzerbild von meikel
meikel meikel ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 66
Beiträge: 4.001
meikel befindet sich auf einem aufstrebenden Ast
AW: Fehler mit PDO::prepare() / non-object

Zitat:
Zitat von phury Beitrag anzeigen
Ich hatte das wohl in dem Versuch das Problem zu lösen irgendwo gesehen, ausprobiert und danach nicht mehr rückgängig gemacht.
Wo das war kann ich nicht mehr sagen. Ich dachte eben, dass das zu der "Ersetzung" gehört.
Meine Frage betraf die Klammern um den Tabellennamen. MySQL erwartet dort einen literalen String und keinen Term.

btw: die Syntax bei LIKE sieht auch gewöhnungsbedürftig aus.
Mit Zitat antworten
  #9  
Alt 27.05.2012, 22:02:10
phury phury ist offline
Anfänger
 
Registriert seit: May 2012
Beiträge: 6
phury befindet sich auf einem aufstrebenden Ast
AW: Fehler mit PDO::prepare() / non-object

Klammern um welchen Tabellennamen?

Ich verwende keine MySQL- sondern eine SQLite-Datenbank. Ich nahm an, das sieht man wo die PDO-Instanz erzeugt wird.

Wieso sieht die Syntax bei LIKE gewöhnungsbedürftig aus? Die einfachen Hochkommata habe ich gesetzt um sicherzustellen, dass das % als Wildcard die Datenbank auch erreicht.
Mit Zitat antworten
  #10  
Alt 27.05.2012, 22:46:56
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.208
vt1816 befindet sich auf einem aufstrebenden Ast
vt1816 eine Nachricht über Skype™ schicken
AW: Fehler mit PDO::prepare() / non-object

Zitat:
Zitat von phury Beitrag anzeigen
Hmm, viel hat mir das jetzt nicht geholfen.
Scheibar doch, denn darauf
Zitat:
Zitat von phury Beitrag anzeigen
...
Wie auch immer ...
Ich habe das Problem gelöst, indem ich
  • erstens das SQL-Statement mit den Parametern in einer Variable $sql abgelegt
  • ...
lief meine Hilfe hinaus.



Zitat:
Zitat von phury Beitrag anzeigen
[]
Als Warnung vorab: Ich bin blutiger Anfänger in php. Also bitte nicht böse sein, ...
Noch ein Hinweis: übernimm niemals ungeprüft $_GET/$_POST!
__________________
Gruss vt1816


Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
fehler nach Captcha-Einbau TomDD PHP Grundlagen 1 14.11.2008 12:15:12
XAMP gehts, auf realer server nicht: Fehler: Cannot use object of type ... as array mysteryxxx PHP für Fortgeschrittene und Experten 4 03.08.2008 16:33:04
FEHLER: Fatal error: Using $this when not in object context in.........on line 78 M-Cha PHP für Fortgeschrittene und Experten 1 06.04.2008 00:21:27
Sessions chieftequila PHP Grundlagen 26 12.10.2006 17:40:22
Fehler im Script? |Coding PHP für Fortgeschrittene und Experten 17 10.09.2002 09:42:03


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:44:13 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.


© 2001-2014 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt