2 回答

TA貢獻1856條經驗 獲得超17個贊
對的,這是可能的。您可以執行現在正在執行的操作,但需要execute()在準備每個查詢后調用方法。除此之外,將其包裝在事務中也是一個好主意。事務可幫助您確保所有操作成功或全部失敗。如果其中一個失敗,其他的就不會被執行。
您的固定代碼應如下所示:
<?php
$var1 = $_POST['var1'];
$var2 = $_POST['var2'];
$var3 = $_POST['var3'];
// Database connection
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // switches error reporting on
$conn = new mysqli('localhost','user','password','database');
$conn->set_charset('utf8mb4'); // always set the charset
// Start transaction
$conn->begin_transaction();
$stmt = $conn->prepare("insert into table1(var1, var2, var3) values(?, ?, ?)");
$stmt->bind_param("sss", $var1, $var2, $var3);
$stmt->execute();
$stmt = $conn->prepare("insert into table2(var1) values(?)");
$stmt->bind_param("s", $var1);
$stmt->execute();
$stmt = $conn->prepare("insert into table3(var2, var3) values(?, ?)");
$stmt->bind_param("ss", $var2, $var3);
$stmt->execute();
// End transaction
$conn->commit();

TA貢獻1777條經驗 獲得超3個贊
嘗試調用 $stmt->execute();?每次調用 $stmt->bind_param() 后;
?PDO 支持多個查詢(PDO_MYSQL、PDO_MYSQLND)
- 2 回答
- 0 關注
- 158 瀏覽
添加回答
舉報