phpbar.de logo

Mailinglisten-Archive

[php] PHP/MySQL: In mehrere Tabellen schreiben...

[php] PHP/MySQL: In mehrere Tabellen schreiben...

Kristian =?iso-8859-1?Q?K=F6hntopp?= kk_(at)_netuse.de
Mon, 12 Jul 1999 09:10:28 +0200


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