Schlüssel eines Tables nach INSERT

pflaume

Mitglied
Hi!

Also angenommen ich habe zwei Tabellen in meiner Datenbank wie zB hier abgebildet:
http://tut.php-q.net/img/MySQL-2-Tab-Spalte.png
Gut, nun stellt sich bei mir folgendes Problem:
Angenommen, ich will per INSERT einen Eintrag in das "News"-Table hinzufügen, und dazu noch gleichzeitig ein Standartkommentar in "News_Kommentare".
Dazu brauch ich ja dann die ID vom ebenso angelegten "News"-Table, welches ich dann in das "News_Kommentare"-Table einfügen kann.
Aber wie komme ich an die ID ran?

Dankeschön!

PS: Ich hab mich bereits über diese Join-Funktionen informiert, aber das ist anscheinend nicht das, wonach ich suche. Es geht ja hier nicht darum die Daten auszugeben, sonder es geht darum sozusagen den ID-Wert des zuletzt angelegten Tables zu bekommen.
 
PPS:
Also ich habe bereits an eine Funktion gedacht, welche dann sozusagen den Höchstwert der IDs im Table raussucht und um 1 weiterzählt...
Aber im Endeffekt läuft das nicht ganz Fehlerfrei und es kommt mir auch nicht allzu elegant vor..
 
Hey Danke!
Das ist genau das was ich wollte!

Aber könntest du mir mal ein Beispiel zu
LAST_INSERT_ID() geben?

PHP:
$l =  "SELECT LAST_INSERT_ID() FROM med";
$l2 = mysql_query($l);
echo "$l2<br>";
<< Das gibt mir "Resource id #9" raus, damit kann ich in meinem Script nicht arbeiten :confused:

Das mit mysql_insert_id() kapier ich nicht ganz,
wird dann immer Der Wert der letzten DB Verbindung abgefragt?
Also ich müsste dann
INSERT ...
mysql_insert_id()
INSERT ...
mysql_insert_id()
INSERT ...
mysql_insert_id()

machen? also immer direkt nach dem insert eintrag?

Dankeschön!
 
PHP:
//hier das Insert-Statement
$res=mysql_query("SELECT LAST_INSERT_ID() AS lastId");
$row=mysql_fetch_assoc($res);
$lastId=$row['lastId'];
alternativ:
PHP:
//hier das Insert-Statement
$lastId=mysql_insert_id();
Die PHP-Variante mit [phpf]mysql_insert_id[/phpf] funktioniert allerdings nur sicher, wenn die Auto-Increment-Spalte als INT oder kleinerer Ganzzahltyp definiert ist, also nicht mit BIGINT.

Beide Varianten geben Dir den zuletzt unter der verwendeten Verbindung eingetragenen Auto-Increment-Wert. Es gibt somit keine Kollision zwischen gleichzeitig ausgeführten Skripten.

Gruß hpvw
 
Danke!!

einwandfrei.
Aber sowas ist nicht für einzelne Tables anwendbar, oda?
Also ich kann damit nicht rausinden, welcher Wert zuletzt in Table01 und welcher zuletzt in Table02 geschrieben wurde?

Dankeschön!
 
Das ist richtig, Du musst den Code zum herausfinden der zuletzt eingefügten ID immer direkt nach dem Insert machen (oder zumindest vor dem nächsten).

Gruß hpvw
 
Zurück