MySql II

Thomasio

Erfahrenes Mitglied
Nachdem mein MySql-Verbindung jetzt funktioniert (dank deepthroat), lese ich jetzt schon seit Tagen das Referenzhandbuch.
Die Grundlagen verstehe ich schon, aber irgendwie komme ich immer wieder in einen Dschungel von verschachtelten Befehlen, wo ich die Übersicht verliere.

Aktueller Fall: Ergebnis einer Abfrage auf Fehler prüfen.

Code:
MYSQL_RES *result;
MYSQL_ROW row;
MYSQL_FIELD *fields;
UINT numFields;
char query[] = "SELECT * FROM `tablename` ORDER BY `id`";
mysql_real_query(&MySqlConnection,query,strlen(query));
result = mysql_use_result(&MySqlConnection);
while((row = mysql_fetch_row(result)))
     {
         numFields = mysql_num_fields(result);
         fields = mysql_fetch_fields(result);
         // usw.
     }
mysql_free_result(result);

Da möchte ich jetzt Fehlerprüfung einbauen für

1) keine Verbindung zur DB oder sonstiger Error
2) tablename existiert nicht
3) tablename existiert, ist aber leer

Mir ist schon klar, dass ich dazu die Rückgabewerte der Befehle checken muss, aber welche, und wie?
Wenn ich im Referenzhandbuch finde:
Nach mysql_use_result() aufgerufen, liefert mysql_fetch_row() den Wert NULL, wenn keine Zeilen mehr vorliegen oder wenn ein Fehler auftrat.
dann weiss ich nicht, wie ich unterscheiden soll, zwischen Tabelle leer und Fehler.
Und wenn ich lese:
Leere Felder und Felder mit NULL haben beide die Länge null. Sie können sie unterscheiden, indem Sie sich den Zeiger auf den Feldwert anschauen: Ist er NULL, speichert das Feld den Wert NULL; andernfalls ist es leer.
dann verstehe ich Bahnhof.

Ist jemand so nett und erklärt mir das?
 
1) keine Verbindung zur DB oder sonstiger Error
Rückgabewert von mysql_real_query überprüfen.

2) tablename existiert nicht
Dann sollte result == NULL sein. Den genauen Fehler erhältst du mittels mysql_errno.

3) tablename existiert, ist aber leer
Das wäre dann der Fall wenn mysql_fetch_row beim ersten Aufruf gleich NULL zurückgibt.

Grüße,
Matthias
 
Zurück