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

Làm cách nào để chạy nhiều truy vấn chèn trong SQL bằng PHP trong một lần?

Điều này có nghĩa là bạn cần một giao dịch .

Một giao dịch là một tập hợp các truy vấn mà tất cả đều thực hiện tốt hoặc nếu một truy vấn không thành công - tất cả chúng đều thất bại. Điều này là để đảm bảo rằng bạn không kết thúc với dữ liệu tào lao trong các bảng của mình.

Không

  • Không sử dụng nhiều truy vấn.
  • Không sử dụng mysql_* (các) chức năng.
  • Không sử dụng chèn hàng loạt.

Những người bảo bạn làm điều đó hoàn toàn không biết họ đang làm gì, hãy phớt lờ họ.

Làm

Mã mẫu - KHÔNG sao chép dán

$dsn = 'mysql:dbname=testdb;host=127.0.0.1;charset=utf8mb4';
$user = 'dbuser';
$password = 'dbpass';

$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$insert['first'] = $pdo->prepare("INSERT INTO table SET col1 = :val, col2 = :val2");
$insert['second'] = $pdo->prepare("INSERT INTO another_table SET col1 = :val, col2 = :val2"); 

$pdo->beginTransaction();

$insert['first']->bindValue(':val', 'your value');
$insert['first']->bindValue(':val2', 'anothervalue');
$insert['first']->execute();

$insert['second']->bindValue(':val', 'your value');
$insert['second']->bindValue(':val2', 'anothervalue');
$insert['second']->execute();

$pdo->commit();

Đoạn mã trên sẽ CHỈ lưu dữ liệu trong hai bảng nếu cả hai lần chèn đều thành công.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để có được sự khác biệt giữa các hàng liên tiếp trong MySQL?

  2. Làm thế nào để thay đổi mật khẩu gốc MySQL thành mặc định?

  3. Đối lập với GROUP_CONCAT trong MySQL là gì?

  4. Chuyển đổi bảng MySQL với dữ liệu được mã hóa không chính xác thành UTF-8

  5. Thứ tự MySQL theo kết quả phù hợp nhất