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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
27.05.2012, 14:46:52
|
Anfänger
|
|
Registriert seit: May 2012
Alter: 33
Beiträge: 6
|
|
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_ERRMODE, PDO::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.
|
27.05.2012, 15:31:15
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Fehler mit PDO::prepare() / non-object
Zitat:
Zitat von phury
Liebe Community,
|
Hallo und willkommen hier im Forum.
Zitat:
Zitat von phury
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
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, 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!
|
27.05.2012, 16:17:19
|
Anfänger
|
|
Registriert seit: May 2012
Alter: 33
Beiträge: 6
|
|
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.)
|
27.05.2012, 16:29:19
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Fehler mit PDO::prepare() / non-object
Zitat:
Zitat von phury
PHP-Code:
<?php
...
$dbh = new PDO('sqlite:../db/db_schulung.sqlite');
?>
|
Nur das Du PDO und nicht PDOStatment benutzt!
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, 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!
|
27.05.2012, 20:18:13
|
Anfänger
|
|
Registriert seit: May 2012
Alter: 33
Beiträge: 6
|
|
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);
|
27.05.2012, 20:22:40
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Fehler mit PDO::prepare() / non-object
Zitat:
Zitat von phury
Ja ... also die Fragezeichen stehen als Platzhalter für die 3 Werte,
|
Ja, aber seit wann wird der Tabellenbezeichner geklammert?
|
27.05.2012, 20:33:06
|
Anfänger
|
|
Registriert seit: May 2012
Alter: 33
Beiträge: 6
|
|
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.
|
27.05.2012, 20:44:13
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Fehler mit PDO::prepare() / non-object
Zitat:
Zitat von phury
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.
|
27.05.2012, 21:02:10
|
Anfänger
|
|
Registriert seit: May 2012
Alter: 33
Beiträge: 6
|
|
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.
|
27.05.2012, 21:46:56
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Fehler mit PDO::prepare() / non-object
Zitat:
Zitat von phury
Hmm, viel hat mir das jetzt nicht geholfen.
|
Scheibar doch, denn darauf
Zitat:
Zitat von phury
...
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
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, 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!
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:42:22 Uhr.
|