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

Làm cách nào để sử dụng các câu lệnh đã soạn sẵn kết hợp với Giao dịch với PHP?

Chỉ cần gọi "thực thi" sau khi bạn gọi "beginTransaction".

Nơi bạn gọi là "chuẩn bị" không thực sự quan trọng.

Đây là một ví dụ đầy đủ:

http://php.net/manual/en/pdo.begintransaction.php

VÍ DỤ:

 try {
    $cnx = new PDO($dsn,$dbuser,$dbpass);   
    $cnx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $cnx->beginTransaction();

    $stmt=$cxn->prepare("SELECT * FROM users WHERE username=?");
    $stmt->execute(array($user_input));

    $stmt_2=$cxn->prepare("SELECT * FROM othertable WHERE some_column=?");
    $stmt_2->execute(array($user_input_2));

    $cnx->commit();
  }
  catch (Exception $e){
    $cxn->rollback();
    echo "an error has occurred";
  }

Tái bút:1) Tất nhiên, tôi giả định rằng $ user_input và $ user_input_2 khả dụng ngay lập tức. Bạn không muốn giao dịch của mình bị treo lâu một cách không cần thiết;)

2) Dựa trên câu trả lời bình luận của bạn ở trên, tôi nghĩ bạn có thể nhầm lẫn giữa "thực thi" và "bắt đầu tran / cam kết". Vui lòng xem liên kết của tôi.

3) Bạn thậm chí cần Một giao dịch? Bạn chỉ đang thực hiện hai "lựa chọn".

4) Cuối cùng, tại sao không làm một "tham gia" (hoặc liên hiệp, nếu tương thích) thay vì hai "lựa 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. Làm thế nào bạn có thể tìm thấy các hàng có các cột bằng nhau?

  2. Làm thế nào để sử dụng Linq trong C # để chọn một chuỗi cụ thể từ nhiều cột lồng nhau?

  3. MySQL:Đếm các hàng riêng biệt mỗi ngày

  4. Bất kỳ đề xuất nào về giải pháp ruby ​​để điền cơ sở dữ liệu sqlite từ nguồn mysql

  5. Có thể Tắt tính năng xóa trên bảng trên MYSQL không?