0

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

4 回答 4

1

你只需要先配置 mysqli 来抛出异常。干得好:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
于 2013-09-03T05:02:10.563 回答
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();
}
于 2013-09-03T05:04:02.163 回答
0

你使用的函数mysqli_query不会引发异常让你捕捉!如果出现问题,它将返回 false。因此,您可以执行以下操作:

if (mysqli_query($connction,query) === false) {
       // Check the error message and do rollback
}
于 2013-09-03T05:05:47.153 回答
0

如果您使用 mysqli php 函数,您可以选择使用 set auto commit 、 commit 和 roll back ,就像在 MySQL 中一样

例如

/* disable autocommit */
$mysqli->autocommit(FALSE);

//execute your code 
/* commit insert */

$mysqli->提交();

如果你想回滚使用

/* Rollback */
$mysqli->rollback();
于 2013-09-03T05:08:02.900 回答