sql >> Database >  >> RDS >> Mysql

PHP/MySQL rij invoegen en vervolgens 'id' ophalen

$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);

Zie mysqli_insert_id() .

Wat je ook doet, voeg geen "SELECT MAX(id) FROM mytable in en voer dan een "SELECT MAX(id) FROM mytable ". Zoals je zegt, het is een raceconditie en dat is niet nodig. mysqli_insert_id() heeft deze functionaliteit al.

Een andere manier is om beide query's in één keer uit te voeren en MySQL te gebruiken 's LAST_INSERT_ID() methode, waarbij beide tabellen tegelijk worden gewijzigd (en PHP heeft geen ID nodig), zoals:

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

Opmerking dat Elke verbinding de ID apart bijhoudt (conflicten worden dus al voorkomen).



  1. Geen resultaten geretourneerd door de Query-fout in PostgreSQL

  2. Belangrijkste dingen om te controleren in PostgreSQL - Uw werklast analyseren

  3. 12 Best Practices voor MySQL/MariaDB-beveiliging voor Linux

  4. LEAST() Functie in Oracle