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 ;)
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.
$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 (Skype, Mail, PN, 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!
Ja ... also die Fragezeichen stehen als Platzhalter für die 3 Werte,
die in der Methode execute als Parameter (zusammengefasst als array) übergeben werden.
<?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 (Skype, Mail, PN, 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!
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.
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.
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.
...
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
[]
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 (Skype, Mail, PN, 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!