sql >> Databasteknik >  >> RDS >> Mysql

PHP/MySQL infoga rad och få 'id'

$link = mysqli_connect('127.0.0.1', 'my_user', 'my_pass', 'my_db');
mysqli_query($link, "INSERT INTO mytable (1, 2, 3, 'blah')");
$id = mysqli_insert_id($link);

Se mysqli_insert_id() .

Vad du än gör, infoga inte och gör sedan en "SELECT MAX(id) FROM mytable ". Som du säger, det är ett racetillstånd och det finns inget behov. mysqli_insert_id() har redan den här funktionen.

Ett annat sätt skulle vara att köra båda frågorna på en gång och använda MySQL s LAST_INSERT_ID() metod, där båda tabellerna ändras på en gång (och PHP behöver inget ID), som:

mysqli_query($link, "INSERT INTO my_user_table ...;
  INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");

Obs att varje anslutning håller reda på ID separat (så att konflikter redan är förhindrade).



  1. Hur man anger platsen för datafiler och loggfiler när man skapar en databas i SQL Server

  2. Knee-Jerk Wait Statistik :PAGELATCH

  3. cd:-M:ogiltigt alternativ

  4. Aggregera rader i Oracle SQL-sats