mysql_insert_id sichere Methode?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • mysql_insert_id sichere Methode?

    Hallo,

    ich wollte mal nachfragen, ob die PHP Funktion "mysql_insert_id" eine sichere Methode ist?

    Möchte aber vorerst erläutern für was ich sie benutze.
    Wenn ich neue private Nachrichten erstelle, holt sich das System mittels der oben genannten Funktion die letzte ID und speichert sie entsprechend ab.

    Es klappt auch alles wunderbar.
    Nur, was passiert, wenn das System/ die Hompage Tausende User hat und alle gleichzeitig eine private Nachricht schreiben? Kriegt dann trotzdem jeder seine passende ID zugeteilt?

    Gruß,
    T0bbes
  • Die besagt Funktion holt sich nicht wie

    Quellcode

    1. SELECT MAX(id) FROM ...

    die letzte id aus der Tabelle, sondern arbeitet mit der aktuellen Verbindungskennung des Benutzers um den zuletzt eingefügten Auto Increment Wert zu holen, welcher bei einem Insert gecached wird.


    Heisst, dass es egal ist, wieviele Tausende, Millionen oder Milliarden Datensätze eingefügt werden.




    Warnung:
    mysql_insert_id() konvertiert den Typ der Rückgabe der nativen MySQL C API Funktion mysql_insert_id() in den Typ long (als int in PHP bezeichnet). Falls Ihre AUTO_INCREMENT Spalte vom Typ BIGINT ist, ist der Wert den mysql_insert_id() liefert, nicht korrekt. Verwenden Sie in diesem Fall stattdessen die MySQL interne SQL Funktion LAST_INSERT_ID() in einer SQL-Abfrage.

    Quelle:
    php.net/mysql_insert_id
  • mysql_insert_id() liefert die ID, die bei der letzten INSERT-Operation für ein Feld vom Typ AUTO_INCREMENT vergeben wurde. Wenn die Verbindungs-Kennung nicht angegeben wird, wird die zuletzt geöffnete Verbindung angenommen.
    Ich denke das er sich nicht die ID des neusten Datensatzes aus der Tabelle holt, sondern dass er beim letzten INSERT INTO sich die ID zwischenspeichert.

    Wenn nun also 1000 Mal zur selben Zeit die Seite aufgerufen wird, sollte es kein Problem sein, da die einzelnen "PHP-Instanzen" sich ja nicht gegenseitig "kennen"

    Gut ich bin kein Experte aber ich denke mal es sollte kein Problem sein.


    EDIT: Okay Vince war erster .......... :pinch: