Mailinglisten-Archive |
Hey-ho Egon Schmid (_(at)_work) wrote: > > > > mysql_insert_id (int [link_identifier]); > > > > > > Das muss ein Handbuch vom letzten Jahrhundert sein. > > > > das mag ja sein, aendert aber an meinem Problem nichts! hab mir jetzt die aktuelle doku gezogen, doch da steht auch nix tolles drin. > > > Dieser Funktionsprototype sagt, dass der link_identifier optional ist. > > > Wenn er angegeben wird, dann sollte er vom Typ her ein Integer sein. > > > > meine globale Variable ist integer > > Das ist nicht gut und könnte Probleme bereiten. Tut es aber nicht! Du musst mir nicht erklaeren, wie man ordentlich programmiert! Ich kenne alle meine globalen Variabeln und glaub mir: Ich hab mir genau ueberlegt, welche Variablen ich wirklich global haben will. > > > Es funktioniert in mehreren Skripten wenn man das optionale Argument > > > weglässt. > > > > Das ist eine falsche Aussage, sonst haette ich sicherlich > > meine Mail nicht geschrieben! > > Die Aussage ist richtig. Kann es sein, dass Du die Funktion > mysql_insert_id() falsch anwendest? s.u. > Das Problem, warum sich diese > Funktion manchmal merkwürdig verhält ist in Paul DuBois, MySQL: > Entwicklung, Implementierung und Referenz, Markt&Technik, auf den Seiten > 816 - 818 beschrieben. ...und da steht was? Danke fuer den Tip, aber ich werd' mir dafuer jetzt nicht ein Buch kaufen, wo ich seit Jahren keine Buecher mehr kaufe! > > > Probleme gibt es nur, wenn man einen Link_Identifier angibt. > > > > ob mit oder ohne Argument: Sobald das andere Script auf der > > gleichen Seite AUCH eine MySQL-Verbindung aufbaut, klappt in > > meinem Script kein einziges mysql_insert_id() mehr! Und um das > > nochmal zu betonen: Normalerweise benutze ich keine Parameter, > > aber es laueft auch nicht mit dem (correkten!) MySQL-Link besser! > > 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 der Vollstaendigkeit halber hier auch den nicht weniger trivialen Script-Teil, der ganz zu Anfang der Seite include()d wird, und durch seine Existens obige $new_id==0 ist: <?php $jura_host = "bla"; $jura_db = "schwaetz"; $jura_user = "laber"; $jura_pass = "suelz"; $handler = _(at)_mysql_connect("$jura_host","$jura_user","$jura_pass"); _(at)_mysql_select_db ($jura_db, $handler); ?> Diese Sendung wurde Ihnen praesentiert von Jim PGP encrypted mails welcome! Key on any keyserver or ftp://users.de --- Unix´ view of sex: unzip ; touch ; finger; mount; gasp ; yes ; umount ; sleep
php::bar PHP Wiki - Listenarchive