sql >> Databáze >  >> RDS >> Mysql

PHP/MySQL vložit řádek a získat '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);

Viz mysqli_insert_id() .

Ať děláte cokoli, nevkládejte a poté neprovádějte "SELECT MAX(id) FROM mytable ". Jak říkáte, je to sporná podmínka a není potřeba. mysqli_insert_id() již tuto funkci má.

Dalším způsobem by bylo spustit oba dotazy najednou a pomocí MySQL LAST_INSERT_ID() metoda, kde se upraví obě tabulky najednou (a PHP nepotřebuje žádné ID), jako:

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

Poznámka že každé připojení uchovává ID samostatně (takže konfliktům je již zabráněno).



  1. Jak date_part() funguje v PostgreSQL

  2. Dva sloupce v poddotazu v klauzuli where

  3. Jaké jsou známé způsoby uložení stromové struktury v relační databázi?

  4. PostgreSQL - dotaz z bash skriptu jako uživatel databáze 'postgres'