我有大约6个查询需要成功执行。现在我使用 mysqli_query 函数来执行所有查询。如何确保所有查询成功执行?我尝试了一种try catch方法,但它没有用。
mysqli_query($connection,start)
try{
mysqli_query($connction,query1)
mysqli_query($connction,query2)
mysqli_query($connction,query3)
mysqli_query($connction,query4)
mysqli_query($connection,commit)
}catch($e){
mysqli_query($connection,ROLLBACK)
}
此查询有什么问题?有没有更好的方法呢?
答案 0 :(得分:1)
您必须先配置mysql才能抛出异常。你走了:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
答案 1 :(得分:0)
默认情况下mysqli_query
返回false
但不会在查询失败时抛出异常。
如果您不使用例外模式,则需要检查返回值。
的例如强> 的
$querys = array($sql1, $sql2, ..., $sql6);
$mysqli->autocommit(false);
foreach($querys as $sql) {
$ret = $mysqli->query($sql);
if (!$ret) {
break;
}
}
if ($ret) {
$mysqli->commit();
} else {
$mysqli->rollback();
}
答案 2 :(得分:0)
您使用mysqli_query
的函数不会引发异常以便您抓住!
如果出现问题,将返回false。
所以你可以这样做:
if (mysqli_query($connction,query) === false) {
// Check the error message and do rollback
}
答案 3 :(得分:0)
如果您使用的是mysqli php函数,您可以选择在MySQL中使用set auto commit,commit和roll
对于eaxample
/* disable autocommit */
$mysqli->autocommit(FALSE);
//execute your code
/* commit insert */
$ mysqli->提交();
如果您想回滚使用
/* Rollback */
$mysqli->rollback();