2011-01-17 14 views
1

ich meine mysql_query Umwandlung() ruft zu PDO aber nicht verstehen, wie ein falsch Ergebnis bei einem Fehler erhalten. Dies ist mein Code:So rufen Sie das PDO-Ergebnis ab == false?

$STH = $DBH->query("SELECT * FROM articles ORDER BY category"); 
$STH->setFetchMode(PDO::FETCH_ASSOC); 
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); 

Das ist, was ich versuche zu tun, aber nicht funktioniert: in der Regel wie so geht

if($STH==false) { 
    foreach($dbh->errorInfo() as $error) { 
    echo $error.'<br />'; 
    } 
} 
+0

Wenn Sie speziell mit 'false' oder' true' arbeiten, sollten Sie immer '===' (= x3) verwenden, um die Ergebnisse zu vergleichen. – RobertPitt

+0

@zerkms, ich glaube, das Javascript-Team dachte auch '==' werde tun – RobertPitt

Antwort

2

Bei der Verwendung von PDO die Art der Abfrage:

try 
{ 
    $STH = $DBH->prepare("SELECT * FROM articles ORDER BY category"); //Notice the prepare 
    $STH->setFetchMode(PDO::FETCH_ASSOC); 
    //No need to silent as the errors are catched. 

    if($STH === false) //Notice the explicit check with !== 
    { 
     //Do not run a foreach as its not multi-dimensional array 
     $Error = $DBH->errorInfo(); 

     throw new Exception($Error[2]); //Driver Specific Error 
    } 
}catch(Exception $e) 
{ 
    //An error accured of some nature, use $e->getMessage(); 
} 

Sie sollten errorInfo sehr sorgfältig lesen und die Beispiele studieren.

+0

Ich verstehe den obigen Code nicht. Wo wird der Fehler gedruckt? Und was "wirft neue Ausnahme ($ Fehler [2]);" machen? Warum Schlüssel 2? – bart

+0

Schlüssel 2 ist der treiberspezifische Fehler, dies ist die beste Chance, eine gültige Erklärung eines Fehlers zu erhalten, wenn Sie den errorInfo Link, den ich gepostet habe, erklären, all dies, der Wurf die Ausnahme ist eine Möglichkeit, Fehler zu werfen und platzieren in einem try-Block bedeutet, dass es die Anwendung nicht durch die Anzeige des Fehlers auf dem Bildschirm, sondern an den catch-Block gesendet wird, so dass Sie die Fehler-und Redirect/show-Fehler Seite usw. Forschung Ausnahmen und Try/Catch-Blöcke für weitere Informationen - Bitte lesen Sie dies für Ausnahmen: http://php.net/manual/en/language.exceptions.php – RobertPitt

+0

Thx Robert Try/Catch ist neu für mich, ich bin dabei. – bart

Verwandte Themen