echo $begrüßung;
Ich moechte, dass die Daten einer Session in einer mysql Datenbank gespeichert werden. Da ich nun außerdem verhindern moechte, dass bei nahezu gleichzeitigem Beginn zweier Sessions Fehler auftreten, wollte ich meine SQL Anweisung reapeatable read geschuetzt machen:
Welche Fehler befürchtest du?
$qry = " START TRANSACTION; " .
" INSERT INTO Session (SessionID,StartTime,Usertype,Name) " .
" VALUES ('$sessionid','$startime','Admin','$Admin_Account'); " .
" SELECT last_insert_id(); " .
" COMMIT;";
PHP weigert sich, mehrere Statements mit einem mysql_query()-Aufruf auszuführen. Und das ist auch gut so, verhindert dies doch zumindest diejenigen SQL-Injection-Angriffe, die das eigentliche Statement abschließen und neue Statements anzuhängen versuchen. Für mehrere Statements benötigst du PHP5, die mysqli-Extension und die Funktion mysqli_multi_query(). Außerdem brauchst du die InnoDb-Datebase Engine, wenn du unter MySQL Transaktionen vermenden willst.
Nach dem Ausfuehren des query`s wollte ich dann eben die last_insert_id auslesen lassen, um sie hinterher weiter zu benutzen. Da aber zwischen Insert und Select ein weiteres Insert erfolgen koennte, wuerde die last_insert_id u.U. nicht mehr stimmen.
Wenn das erfolgt, bist du aber selbst dran schuld, denn LAST_INSERT_ID() bezieht sich immer nur auf die aktuelle Datenbankverbindung. Die PHP-Funktion mysql_insert_id() greift übrigens auch nur auf diesen Wert zu.
echo "$verabschiedung $name";