dedlfix: MySQL / PHP Abfragefehler

Beitrag lesen

Tach!

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /var/www/****/index.php on line 13
Wo liegt da denn der Fehler?

Generelle Frage: Wie betreibt man Fehlersuche? Die Meldung ist ja schön einfach. Es wird eine Ressource erwartet, stattdessen offensichtlich ein Boolean übergeben. Das schauen wir uns doch mal an:

var_dump($res1);

Ausgabe: false

Aha! Und wo kommt das false her?

$res1 = mysql_query("select * from indexe where monat = $month");

$dsatz1 = mysql_fetch_assoc($res1);

  
mysql\_query() hat es geliefert. Na sowas, warum macht es das denn? [Handbuch befragen!](de.php.net/manual/en/function.mysql-query.php) Da steht dann, dass false bei einem Fehler zurückgegeben wird und wie man an den Fehlermeldungstext kommt (sowie obendrein noch, dass mal bitte auf mysqli oder PDO umsteigen soll).  
  
Anhand des MySQL-Meldungstextes sieht man dann, woran MySQL gescheitert ist und kann den Fehler beseitigen. Ist nun alles gut? Nur dann, wenn man auch daran glaubt, dass im Sommer immer schönes Wetter ist. Fehler treten nicht nur bei selbstverschuldetem Handeln auf. Dem MySQL-Server kann aus verschiedenen Gründen unpässlich sein. Das äußert sich nicht nur durch einen gescheiterten Verbindungsaufbau, sondern auch in aus anderen als Syntax-Gründen nicht durchlaufenden Querys. Deshalb ist es wichtig, sich über solche Ausfallszenarien Gedanken zu machen und diese in seinem Script-Ablauf zu berücksichtigen. Ein reines Ausgeben der Fehlermeldung (immer wieder auch mit einem sofortigen Abbruch zu sehen) ist nur zum Debugging sinnvoll. Für den laufenden Betrieb ist das keine Information, die einen Benutzer etwas angeht (und auch kein angemessenes Verhalten).  
  
  
dedlfix.