Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP/MySQL вмъкнете ред, след което получете '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);

Вижте mysqli_insert_id() .

Каквото и да правите, не вмъквайте и след това направете "SELECT MAX(id) FROM mytable ". Както казвате, това е условие за състезание и няма нужда. mysqli_insert_id() вече има тази функционалност.

Друг начин би бил да стартирате и двете заявки наведнъж и да използвате MySQL LAST_INSERT_ID() метод, при който и двете таблици се променят наведнъж (и PHP не се нуждае от никакъв идентификатор), като:

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

Забележка че всяка връзка следи ID отделно (така че конфликтите вече са предотвратени).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да покажете редовете, които не присъстват в друга таблица в MySQL

  2. Неизвестна колона в клауза Къде

  3. Генериране на поредица от дати

  4. Въведение в SQL групиране и сумиране

  5. 3 начина за „дехексиране“ на низ в MySQL