Chris: MySQL gibt keine Fehlermeldung aus!

Hey :-)

Ich hab grad festgestellt, dass ich bei einer mySQL-Abfrage in PHP keine Fehlermeldungen erhalte. Die Abfrage funktioniert zwar - aber wenn ich Werte eintrage, die keinen Sinn ergeben, meckert er nicht.

Hier der Code:

<?
include("sqlconnect.php");
$abfrage = "SELECT * FROM web_login WHERE mail = 'test'";
$ergebnis = mysql_query($abfrage);
while ($row = mysql_fetch_array ($ergebnis)) {
 $user_mail = $row['mail'];
}
echo $user_mail;
?>

Selbst wenn ich statt 'test' etwas ganz beliebiges angebe, was in der Tabelle gar nicht existiert - keine Fehlermeldung. Oder wenn ich statt "mail" einfach mal "müll" eintrage - keine Fehlermeldung, nur eine blanke Seite.

Wenn ich die sqlconnect.php auskommentiere, so dass er keine Verbindung zur Datenbank herstellen kann - dann meckert er doch! Aber ob die Abfrage nun Sinn oder keinen Sinn ergibt, stört ihn nicht weiter.

Was läuft da verkehrt?

Lg
Chris

  1. Hallo

    Selbst wenn ich statt 'test' etwas ganz beliebiges angebe, was in der Tabelle gar nicht existiert - keine Fehlermeldung. Oder wenn ich statt "mail" einfach mal "müll" eintrage - keine Fehlermeldung, nur eine blanke Seite.

    warum sollte es eine Fehlermeldung geben?

    Was läuft da verkehrt?

    Nichts, das ist das zu erwartende Verhalten.
    Das einzige, was verkehrt ist, ist Deine Erwartungshaltung.
    Ein leeres Ergebnis ist ein richtiges Ergebnis und kein Fehler.

    Freundliche Grüße

    Vinzenz

  2. Hello,

    Was läuft da verkehrt?

    Vermutlich gar nichts.
    Aber das kannst Du nur wissen, wenn Du MySQL auch danach fragst.
    Nach jedem Request an das DBMS solltest Du den Status (die letzte Fehlernummer) auch abfragen.

    Das geht mit

    $fehler_nr = mysql_errno($connection);

    und

    $fehler_text = mysql_error($connection);

    Außerdem ist es sinnvoll, nach einem Query auch das Queryhandle abzufragen, ob es überhaupt gültig ist.

    $result = mysql_query($sql, $connection);

    if ($result and $mysql_errno == 0)
       {
         ## weitermachen

    }
       else
       {
         ## Fehlerbehandlung

    }

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

    1. Hi,

      Nach jedem Request an das DBMS solltest Du den Status (die letzte Fehlernummer) auch abfragen. [...]
      Außerdem ist es sinnvoll, nach einem Query auch das Queryhandle abzufragen, ob es überhaupt gültig ist.

      Und zusaetzlich:
      In diesem konkreten Fall - in dem wie bereits gesagt, kein Fehler vorliegt, sondern lediglich ein "leeres" Ergebnis - sollte man dann vielleicht auch noch mit mysql_num_rows() nachfragen, ob die Anzahl zurueckgelieferter Datensaetze sich von Null unterscheidet.

      MfG ChrisB

      1. Und zusaetzlich:
        In diesem konkreten Fall - in dem wie bereits gesagt, kein Fehler vorliegt, sondern lediglich ein "leeres" Ergebnis - sollte man dann vielleicht auch noch mit mysql_num_rows() nachfragen, ob die Anzahl zurueckgelieferter Datensaetze sich von Null unterscheidet.

        Genau so hab ich es jetzt auch gemacht. Ist auch völlig normal... ich weiß gar nicht, was gestern in mich gefahren ist, ich hab alles verdreht, verwechselt oder vergessen... natürlich liefert Mysql keinen Fehler, ich hab das sonst auch immer mysql_num_rows() gemacht.

        Entsprechend groß war der *an die Stirn klatsch*-Effekt im Nachhinein... ;-)