Mailinglisten-Archive |
Matthias Jim Knopf wrote:
> > mysql_insert_id() ist unmittelbar nach der Generierung eines
> > AUTO_INCREMENT-Wertes abzufragen. Wenn man das irgendwo im Skript macht,
> > dann gehts halt nicht oder ist dem Zufall überlassen.
>
> Auch diesen Fehler hab ich nicht begangen, und bevor noch
> weiter im Trueben gefischt wird, hier der Auszug meines Scripts:
>
> // sql_query() ist der Kompatibilitaetsaufruf, der mysql_query()
> // mit vertauschten Parametern (!) aufruft.
> $res=sql_query ($SQL_CONNECTION,
> "insert into ".$USER_TABLE." ".
> "(user_name, user_fullname, user_pwd, multilogin, user_flags, ".
> " user_email, expire_at) values (\"".
> addslashes($edit_name[0])."\", \"".addslashes($edit_fullname[0]).
> "\", \"".$edit_pwd[0]."\", \"".$edit_multi[0]."\", ".
> $flags.", \"".addslashes($edit_email[0]).
> "\", \"".$edit_expire[0]."\")");
> // Damit das GANZ klar nochmal gesagt wird: Die query oben
> // ist erfolgreich, falls ich beim Formatieren der Mail mit
> // den quotes durcheinander kam: Sorry, aber folgende Zeile
> // liefert '0' :
> $new_id=sql_insert_id();
> // und auch hier ist sql_insert_id() ein direkter Verweis
> // auf mysql_insert_id()
>
> // Alle noch folgende Zeilen sind nur fuer's debuggen geschrieben:
> if ($new_id==0) {
> if (!($new_id=sql_insert_id($SQL_CONNECTION))) {
> if (!($new_id=sql_insert_id($res))) {
> // hier lande ich IMMER, wenn das Script des Kollegen
> // mit in dieser Seite drin ist:
> echo ("New ID: 0 in all stages: $new_id. \$res: $res<br>");
> }
> else {
> echo ("stage III Done<br>");
> }
> }
> else {
> echo ("stage II Done<br>");
> }
> }
Und was ist, wenn die Query nicht funktioniert hat? Paul DuBois schreibt
dazu:
Gibt den von der zuletzt auf der gegebenen Verbindung ausgeführte
Anfrage generierten AUTOINCREMENT-Wert zurück. Wurde während der
Lebensdauer der Verbindung kein solcher Wert generiert, wird Null
zurückgegeben.
Du solltest eine Fehlerüberprüfung bei $res = sql_query (...) or die
("Hat nicht funktioniert"); reinbauen.
> $handler = _(at)_mysql_connect("$jura_host","$jura_user","$jura_pass");
> _(at)_mysql_select_db ($jura_db, $handler);
Das _(at)_-Zeichen bitte beim Debuggen entfernen.
-Egon
--
SIX Offene Systeme GmbH · Stuttgart - Berlin - New York
Sielminger Straße 63 · D-70771 Leinfelden-Echterdingen
Fon +49 711 9909164 · Fax +49 711 9909199 http://www.six.de
php::bar PHP Wiki - Listenarchive