如何确保成功执行多个mysql查询

时间:2013-09-03 04:52:39

标签: mysql sql mysqli

我有大约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)

    }

此查询有什么问题?有没有更好的方法呢?

4 个答案:

答案 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();