Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHP/MySQL wstaw wiersz, a następnie pobierz „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);

Zobacz mysqli_insert_id() .

Cokolwiek robisz, nie wstawiaj, a następnie rób "SELECT MAX(id) FROM mytable ". Jak mówisz, jest to wyścig i nie ma potrzeby. mysqli_insert_id() ma już tę funkcję.

Innym sposobem byłoby uruchomienie obu zapytań za jednym razem i użycie MySQL LAST_INSERT_ID() metoda, w której obie tabele są modyfikowane na raz (a PHP nie wymaga żadnego identyfikatora), np.:

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

Uwaga że każde połączenie śledzi oddzielnie identyfikator (więc konflikty są już zapobiegane).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odmowa dostępu dla użytkownika „root”@„localhost” podczas próby nadania uprawnień. Jak nadawać uprawnienia?

  2. Baza danych Python i MySQL:praktyczne wprowadzenie

  3. Samouczek MySQL:klauzula MySQL IN (podstawowa)

  4. Jak zatrzymać/uruchomić MySQL za pomocą MySQL Workbench

  5. Konwertuj MySQL na SQLlite