Mailinglisten-Archive |
Marian Steinbach wrote: > Kann man irgendwie besonders elegent erfahren, welche id eben in > tabelle_1 vergeben wurde? Meine mir etas komisch erscheinende Lösung > ist, daß ich zunächst den Eintrag wie folgt in tabelle_1 erzeuge... MySQL hat dazu die Funktion "last_insert_id()", die man zum Beispiel mit "select last_insert_id() as newid" abfragen kann. Von PHP aus kann man entweder diese Query abschicken oder mysql_insert_id() verwenden. Ich persönlich empfinde das ganze auto_increment-Feature jedoch als lästig und die Version von PHPLIB im CVS hat stattdessen datenbankunabhängige Sequences. Das sind eindeutige Zähler, die atomar hochgezählt werden und deren Werte man _vorher_ besorgen kann: $db = new My_DB; $id = $db->nextid("sequence1"); $query = sprintf("insert into tabelle ( id, wert) values ( '%s', '%s' )", $id, $wert); $db->query($query); $query = sprintf("insert into ref ( tab_id, wert2 ) values ('%s', '%s' )", $id, $wert2); $db->query($query); Dieses Stück Code basiert auf PHPLIB-7pre3 oder neuer. Es wird ein Zähler mit dem Namen sequence1 verwendet, der garantiert eindeutige, aufeinanderfolgende Zählerwerte generiert und die beiden Tabellen tabelle und ref werden über diesen Zählerwert miteinander verknüpft. Die Zählerwerte sind auch für viele andere Dinge brauchbar, etwa Transaktionsnummern oder jede andere Anwendung, wo Folgenummern eine Rolle spielen. Kristian -- Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00 Using PHP3? See our web development library at http://phplib.shonline.de/ (GPL)
php::bar PHP Wiki - Listenarchive