PDO::prepare()
Julian von Mendel
- php
0 wahsaga0 Eternius0 Julian von Mendel
Hi,
ich hab eine gaaanz kurze, unheimlich blöde Anfänger-Frage zu PDO:
<?php
error_reporting(E_ALL);
$dbh = new PDO('mysql:host=localhost;dbname=cache', "user", "pw"); $stmt = $dbh->prepare("SELECT * FROM cache");
print_r($stmt->fetch());
?>
Fehlermeldung:
Fatal error: Call to a member function fetch() on a non-object in /home/jvm/public_html/tmp/pdo.php on line 5
$dbh ist ein korrekt erstelltes Objekt. Ein var_dump() auf $stmt zeigt false. Wo liegt das Problem? Der Code ist direkt aus nem' Tutorial abgeschrieben, ich bezweifle das Fehler drin sind. Die Fehlermeldung ergibt sich logischerweise daraus, dass das prepare false zurückgibt. Aber warum macht es das, wenn $dbh ein korrekt erzeugtes PDO-Objekt ist? Wieso erzeugt prepare keine Exception, wo es doch offensichtlich fehlschlägt?
Schöne Grüße
Julian
hi,
$dbh = new PDO('mysql:host=localhost;dbname=cache', "user", "pw");
$stmt = $dbh->prepare("SELECT * FROM cache");
print_r($stmt->fetch());
Möchtest du das Statement nicht erst mal ausführen lassen ...?
$stmt = $dbh->prepare(...);
$sth->execute();
$stmt->fetch();
gruß,
wahsaga
Hallo,
PDO::ERRMODE_SILENT
This is the default mode. PDO will simply set the error code for you to inspect using the PDO::errorCode() and PDO::errorInfo() methods on both the statement and database objects; if the error resulted from a call on a statement object, you would invoke the PDOStatement::errorCode() or PDOStatement::errorInfo() method on that object. If the error resulted from a call on the database object, you would invoke those methods on the database object instead.
gruss
Hi,
tut mir leid. Ihr habt Recht. Ich bin bei fehlerhaftem Code halt fest von einer Exception ausgegangen. Hätte ich das Manual auswendig gelernt wäre das nicht passiert.
Schöne Grüße
Julian