-4
我有一个包含'插入','删除'和'更新'语句的查询。现在的问题是“是否有可能不声明运行,如果任何其他语句的失败”运行查询如果所有的语句都成功
$sql=" START Transaction INSERT statement; DELETE statement; UPDATE statement; COMMIT";
我有一个包含'插入','删除'和'更新'语句的查询。现在的问题是“是否有可能不声明运行,如果任何其他语句的失败”运行查询如果所有的语句都成功
$sql=" START Transaction INSERT statement; DELETE statement; UPDATE statement; COMMIT";
您必须使用MySQL transactions。如果出现问题(例如,出现错误),它将允许您回滚所有更改(这是对事务进行的更改)。
简单的例子:
<?php
$all_query_ok=true; // our control variable
$mysqli = new mysqli("localhost", "user", "pass", "dbname");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* disable autocommit */
$mysqli->autocommit(FALSE);
//we make 4 inserts, the last one generates an error
//if at least one query returns an error we change our control variable
$mysqli->query("INSERT INTO myCity (id) VALUES (100)") ? null : $all_query_ok=false;
$mysqli->query("INSERT INTO myCity (id) VALUES (200)") ? null : $all_query_ok=false;
$mysqli->query("INSERT INTO myCity (id) VALUES (300)") ? null : $all_query_ok=false;
$mysqli->query("INSERT INTO myCity (id) VALUES (100)") ? null : $all_query_ok=false; //duplicated PRIMARY KEY VALUE
//now let's test our control variable
$all_query_ok ? $mysqli->commit() : $mysqli->rollback();
$mysqli->close();
?>
看一看MySQL的交易。 – BenRoob