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