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

Chèn mysqli - nhưng chỉ khi không phải là bản sao

Cân nhắc đặt một unique chỉ mục trên bảng cụ thể này. Đoạn mã sau sẽ thêm chỉ mục và xóa mọi bản sao hiện tại:

ALTER IGNORE TABLE `RegisteredUsersTable` ADD UNIQUE INDEX unique_email (`UserEmail`);

Sau khi điều này được thêm vào, hãy sử dụng INSERT IGNORE hoặc INSERT...ON DUPLICATE KEY UPDATE . Họ sẽ chỉ định dạng chèn trước nếu không có bản sao.

$mysqli->query("INSERT IGNORE INTO RegisteredUsersTable (UserName, UserEmail) VALUES ('".$newUserName."', '".$newUserEmail."')");

Mysql sẽ báo lỗi vì email đã có trong cơ sở dữ liệu. Tuy nhiên, lệnh BỎ QUA đang nói với tập lệnh không chú ý đến lỗi cho truy vấn này bởi vì, trong trường hợp này, bạn mong đợi nó cho một hàng trùng lặp.

Ngoài ra, có một cách để cảnh báo người dùng của bạn bằng thông báo thất bại hoặc thành công, ngay cả với INSERT IGNORE . Sử dụng MYSQL LAST_INSERT_ID() . Nếu một ID đã được cung cấp, nó đã được chèn. Nếu không, thì email đã ở đó (hoặc có một lỗi khác).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn câu lệnh kiểm tra bản sao trước khi chèn

  2. Cách kết nối cơ sở dữ liệu MySQL từ xa trong PHP

  3. Đếm số lần xuất hiện của ký tự trong một chuỗi bằng MySQL

  4. Sử dụng Oracle JDeveloper Snippets với MySQL

  5. Cách chuẩn hóa cơ sở dữ liệu SQL