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.
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:
Und wenn ich lese:
Ist jemand so nett und erklärt mir das?
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:
dann weiss ich nicht, wie ich unterscheiden soll, zwischen Tabelle leer und Fehler.Nach mysql_use_result() aufgerufen, liefert mysql_fetch_row() den Wert NULL, wenn keine Zeilen mehr vorliegen oder wenn ein Fehler auftrat.
Und wenn ich lese:
dann verstehe ich Bahnhof.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.
Ist jemand so nett und erklärt mir das?