phpbar.de logo

Mailinglisten-Archive

[php] mysql_insert_id() nicht bei mehreren Connections?

[php] mysql_insert_id() nicht bei mehreren Connections?

Thomas Feyrer Dante_(at)_altmuehlnet.de
Tue, 15 Aug 2000 03:35:42 +0200


At 21:25 14.08.2000 +0200, Matthias Jim Knopf wrote:
>On Mon, 14 Aug 2000, Robert Hoffmann wrote:
>> >    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 !
>> 
>> Einfach mal reingefragt : Warum möchtest du die ID wissen? Wenns nur für 
>> interne DB-Zwecke ist, kannst du das Ganze Problem auch umgehen...
>
>    Nein, ich kann es  nicht  wirklich  umgehen,  abgesehen  davon, 
> dass ich das auch nicht ganz einsehen wuerde... Ich brauche  diese 
> Funktion an vielen Stellen in meinem Script, und wenn ich auf  sie 
> verzichten  wollte,  koennte   ich   direkt   auf   AUTO_INCREMENT 
> verzichten, das waer auch nicht Sinn der Sache! Die ID  von  einer 
> Tabelle muss ich uebrigens  in  einer  anderen  Tabelle  eintragen 
> (als Referenz darauf), und so kann ich auf  diese  Funktion  nicht 
> verzichten.
>    Aeh, aber  da  ich  mich  jetzt  an  jeden  Strohhalm  klammere 
> trotzdem die Frage: Was meinst Du mit Umgehen? Ich sehe jetzt  nur 
> eine Moeglichkeit: Ich frage die Datenbank selber  nach  den  IDs, 
> nehme die hoechste Zahl und addiere eins, und  schon  "glaube  ich 
> zu wissen", was MySQL als naechste ID verwenden wird... bei  Multi 
> User Systemen ist das aber schon hart an der Grenze, oder  an  was 
> dachtest Du?

Hi Matthias,

ist von euch denn keiner auf der MySQL-Mailingliste, ich will hier
jetzt nicht blöd daherreden, o.ä. aber es gibt IMHO eine ganz einfache
Lösung zu deinem Problem.

Ich weiss nicht ob du in MySQL den Befehl/die Funktion LAST_INSERT_ID()
ich denke das man das allgemein sogar eher verwenden sollte, da es
(minimal) performanter ist, da man sich die ID nicht erst per PHP holt
und dann wieder an den MySQL-Server übergibt, sondern alles im MySQL-
Server gespielt wird.

Probier halt einfach einmal zu debugging Zwecken ein 

<?
...
$result = mysql_query("SELECT LAST_INSERT_ID()");
echo(mysql_result($result, 0, 0));
...
?>

(absichtlich keine or's o.ä. Prüfungen), ich denke dann bekommst du
die richtige ID, falls nicht, ist PHP auf jedenfall nicht schuld,
sondern der MySQL-Server.

PS: Eine bitte an alle, hört doch bitte mit all den Beschuldigungen
    Verdächtigungen und blöden Anmachen auf! Mich regt es auf, wenn
    ich wieder irgendeine Mail bekomm, in der nur sinnloser Inhalt
    drinnen steht, wenn irgendjemand beschimpft wird.
    Schickt solche Mails doch per PM, dann wird die Liste nicht mehr
    soviel belastet, und keiner "öffentlich Blamiert".

PPS: Erst denken, dann schicken!

Bye
 Dante



php::bar PHP Wiki   -   Listenarchive