
596 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
• mysql_num_rows() gibt die Anzahl von Zeilen in einer Ergebnismenge zur¨uck. Bei
mysql_store_result() kann mysql_num_rows() aufgerufen werden, sobald mysql_
store_result() etwas zur¨uckgibt. Bei mysql_use_result() kann mysql_num_rows()
erst aufgerufen werden, nachdem Sie alle Zeilen mit mysql_fetch_row() geholt hab en.
• mysql_insert_id() gibt die Kennung zur¨uck, die von der letzten Anfrage erzeugt
wurde, die eine Zeile in eine Tabelle mit einem AUTO_INCREMENT-Index einf¨ugte. Siehe
Abschnitt 9.4.3.30 [mysql_insert_id()], Seite 572.
• Einige Anfragen (LOAD DATA INFILE ..., INSERT INTO ... SELECT ..., UPDATE)
geben zus¨atzliche Informationen zur¨uck. Das Ergebnis wird von mysql_info()
zur¨uckgegeb en. Siehe die Beschreibung f¨ur mysql_info() hinsichtlich des Formats
der Zeichenkette, die diese Funktion zur¨uckgibt. mysql_info() gibt einen NULL-Zeiger
zur¨uck, wenn es keine zus¨atzlichen Informationen gibt.
9.4.6.3 Wie erhalte ich die eindeutige Kennung f¨ur die letzte
eingef¨ugte Zeile?
Wenn Sie einen Datensatz in eine Tabelle einf¨ugen, der eine Spalte enth¨alt, die das AUTO_
INCREMENT-Attribut hat, erhalten Sie die letzte erzeugte Kennung durch Aufruf der mysql_
insert_id()-Funktion.
Sie k¨onnen die Kennung auch dadurch abrufen, dass Sie die LAST_INSERT_ID()-Funktion
in einer Anfrage-Zeichenkette verwenden, die Sie an mysql_query() ¨ubergeben.
Sie k¨onnen ¨uberpr¨ufen, ob ein AUTO_INCREMENT-Index benutzt wird, wenn Sie folgenden
Code ausf¨uhren. Er pr ¨uft auch, ob die Anfrage ein INSERT mit einem AUTO_INCREMENT-
Index war:
if (mysql_error(&mysql)[0] == 0 &&
mysql_num_fields(ergebnis) == 0 &&
mysql_insert_id(&mysql) != 0)
{
used_id = mysql_insert_id(&mysql);
}
Die letzte erzeugte Kennung wird im Server auf der Grundlage der jeweiligen Verbindung
gewartet. Sie wird nicht durch andere Clients ge¨andert. Sie wird nicht einmal ge¨andert,
wenn Sie eine andere AUTO_INCREMENT-Spalte mit einem nicht magischen Wert aktualisieren
(einem Wert, der nicht NULL und nicht 0 ist).
Wenn Sie die Kennung benutzen wollen, die f¨ur eine Tabelle erzeugt wurde, um sie in eine
zweite Tabelle einzuf¨ugen, k¨onnen Sie SQL-Statements wie folgt benutzen:
INSERT INTO foo (auto,text)
VALUES(NULL,’text’); # Kennung durch Einf¨ugen von NULL erzeugen
INSERT INTO foo2 (id,text)
VALUES(LAST_INSERT_ID(),’text’); # Kennung in zweiter Tabelle benutzen
9.4.6.4 Probleme beim Linken mit der C-API
Wenn Sie mit der C-API linken, k¨onnen auf manchen Systemen folgende Fehler auftreten:
Comentarios a estos manuales