peter mueller: id bestimmen nach datenbank-eintrag

Hallo

Wie kann ich direkt nach einem Datenbank-Eintrag die "id" bestimmen? Die Datenbank enthält die Felder "id" und "name", wobei das Feld "id" ein Primärschlüssel (auto-increment) ist.

$sql = "insert into db_name (name) values ('Müller')";
mysql_query($sql);

Gibt es hierzu vielleicht ein spezieller Befehl?

Gruss
Peter

  1. Bitte mal die Doku genauer lesen!!!

    $id = mysql_insert_id($dbconnection);

    Gruss Stefan

    1. $id = mysql_insert_id($dbconnection);

      Vielen Dank!

      Gruss
      Peter

  2. Hallo,

    Wie kann ich direkt nach einem Datenbank-Eintrag die "id" bestimmen?
    Gibt es hierzu vielleicht ein spezieller Befehl?

    Du hast Glueck:

    PHP: mysql_insert_id()
    http://www.php.net/manual/de/function.mysql-insert-id.php

    MySQL: LAST_INSERT_ID() und mysql_insert_id()
    http://www.mysql.com/doc/de/Miscellaneous_functions.html
    http://www.mysql.com/doc/de/mysql_insert_id.html

    Gruesse,

    Thomas

    --
    Dank /my/ automatisch ausgeblendet: JavaScript, ASP.
    Manuell "ausgeblendet": Threads mit Frames, Iframes und Scrollbalken im Subject...
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    1. kurz Rückfrage.

      Nehmen wir mal an, dass zwei User fast gleichzeitig das Skript mit dem Befehl insert ausführen, welchen Wert erhalte ich dann für die id?

      zeitliche reihenfolge:

      user 1: insert (id=22)

      user 2 : insert (id=23)

      user 1: mysql_insert_id
      Welchen Wert erhalte ich hierfür?

      1. Hello,

        Nehmen wir mal an, dass zwei User fast gleichzeitig das Skript mit dem Befehl insert ausführen, welchen Wert erhalte ich dann für die id?

        zeitliche reihenfolge:

        user 1: insert (id=22)

        user 2 : insert (id=23)

        user 1: mysql_insert_id
        Welchen Wert erhalte ich hierfür?

        Du erhältst den INT-Anteil der letzten Insert-ID auf deiner Connection, also von User 1. Da dieser Anteil (22) eindeutig kleiner als MAXINT ist, wird die Antwort richtig sein.

        Du solltest Dir gleich eine eigene Funktion schreiben, die das SQL-Statement "SELECT LAST_INSERT_ID();"  benutzt.

        Wenn eine Funktion einen Fehler oder eine bekannte erhebliche Einschränkung besitzt, wie dies bei mysql_insert_id() der Fall ist, sollte man sie gleich durch die bessere Lösung ersetztn.

        Und denke immer daran, dass Du auch 0 zurückbekommen kannst. das bedeutet dann, dass gar kein Satz eingefügt wurde.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        1. Wenn eine Funktion einen Fehler oder eine bekannte erhebliche Einschränkung besitzt, wie dies bei mysql_insert_id() der Fall ist, sollte man sie gleich durch die bessere Lösung ersetztn.

          Besten Dank für den Tipp
          Gruss
          Peter