Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chèn hàng PHP / MySQL rồi nhận '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);

Xem mysqli_insert_id() .

Dù bạn làm gì, đừng chèn và sau đó thực hiện "SELECT MAX(id) FROM mytable ". Giống như bạn nói, đó là điều kiện của cuộc đua và không cần thiết. mysqli_insert_id() đã có chức năng này.

Một cách khác là chạy cả hai truy vấn cùng một lúc và sử dụng MySQL của LAST_INSERT_ID() phương thức, trong đó cả hai bảng được sửa đổi cùng một lúc (và PHP không cần bất kỳ ID nào), như:

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

Lưu ý rằng Mỗi kết nối theo dõi ID riêng biệt (vì vậy, xung đột đã được ngăn chặn).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kết nối ECONNREFUSED - nút js, sql

  2. MySQL có bỏ qua các giá trị null trên các ràng buộc duy nhất không?

  3. Cài đặt Máy chủ Web trong FreeBSD 6.0 với Apache 2.2, MySQL 5.0 và PHP 5 - Phần 3

  4. Làm cách nào để lấy tuổi từ trường D.O.B trong MySQL?

  5. Cách sử dụng mật khẩu gốc với MySQL 5.7