phpbar.de logo

Mailinglisten-Archive

[php] mysql_insert_id() nicht bei mehreren Connections?

[php] mysql_insert_id() nicht bei mehreren Connections?

Matthias Jim Knopf jim_(at)_users.de
Mon, 14 Aug 2000 20:18:48 +0200 (MEST)


On Mon, 14 Aug 2000, Egon Schmid (_(at)_work) 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:

    jaja bla bla! Ich weiss nicht, wozu ich eigentlich mir so  viel 
 Muehe gegeben habe, das Script zu  dokumentieren:  Da  steht  danz 
 fett: "Damit das GANZ klar nochmal gesagt  wird:  Die  query  oben 
 ist  erfolgreich"  und  zum  Beweis  bekomme  ich  ja   oben   die 
 $res-Variable ausgegeben: "$res: 1"

> Du solltest eine Fehlerüberprüfung bei $res = sql_query (...) or die 
> ("Hat nicht funktioniert"); reinbauen. 

    eigentlich schon, aber wie gesagt:  Sie  IST  erfolgreich.  Wie 
 man  vielleicht  erkennen  kann,  wird  hiermit  ein  User-Account 
 angelegt, und dieser  Account  ist  nachher  auch  vorhanden,  nur 
 weiss ich halt nicht seine ID !

> >    $handler    = _(at)_mysql_connect("$jura_host","$jura_user","$jura_pass");
> >    _(at)_mysql_select_db ($jura_db, $handler);
> 
> Das _(at)_-Zeichen bitte beim Debuggen entfernen. 

Das ist nicht mein Script, ich verwende fast nie _(at)_
Aber auch hier wird auch ohne _(at)_ kein Fehler ausgegeben.

Diese Sendung wurde Ihnen praesentiert von Jim
PGP encrypted mails welcome! Key on any keyserver or ftp://users.de
---
 There are two major products that come from Berkeley : LSD and UNIX.
 ... We don't believe this to be a coincidence.



php::bar PHP Wiki   -   Listenarchive