Frank: LAST_INSERT_ID() funkt nicht

Hallo,
Warum funkioniert diese Abfrage nicht? Ich brauche den letzten eingetragenen datensatz.
<?
include("config.php");
mysql_connect($db_host,$db_user,$db_pass) || die("Could not contact mySQL!");
mysql_select_db($db_db) || die("Connected mySQL, but database is unavailable!");

$result = mysql_query("SELECT LAST_INSERT_ID() AS lastid FROM table");

while($row=mysql_fetch_array($result))
 {
 $lastid=$row["lastid"];

echo "".$lastid."<br>";

}

Danke
Frank

  1. Hallo,

    machs doch nicht so umständlich:
    Es gibt direkt eine PHP/MySQL-Funktion dafür
    int mysql_insert_id ( [resource Verbindungs-Kennung])

    Das Problem ist allerdings, ohne INSERT wird die nichts zurückliefern, ebenso wie deine obige Abfrage wahrscheinlich. So lange dein DB-Verbindung keine Datensätze erstellt hat, gibt es auch keinen last insert...

  2. Moin!

    Warum funkioniert diese Abfrage nicht? Ich brauche den letzten eingetragenen datensatz.

    SELECT MAX(idspalte) as lastid FROM table

    wenn du, ohne bereits eine Datenbankverbindung aufgemacht und ein INSERT ausgeführt zu haben, die derzeit höchste vergebene ID haben willst.

    LAST_INSERT_ID() ist eine auf die einzelne Connection bezogene Angabe, die ein vorhergehendes INSERT erfordert und genau die ID dieses INSERTs zurückliefert, um sie z.B. in weiteren Schreibbefehlen zu verwenden. Anders ist es kaum möglich, Fremdschlüssel sicher in MySQL zu realisieren.

    - Sven Rautenberg

    --
    Signatur oder nicht Signatur - das ist hier die Frage!