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 关注
- 124 浏览
添加回答
举报