Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确保多个mysql查询成功执行_Mysql_Sql_Mysqli - Fatal编程技术网

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

如何确保多个mysql查询成功执行,mysql,sql,mysqli,Mysql,Sql,Mysqli,我有大约6个查询需要成功执行。现在我使用mysqli\u query函数来执行所有查询。如何确保所有查询都成功执行?我尝试了一种“尝试捕捉”的方法,但它不起作用 mysqli_query($connection,start) try{ mysqli_query($connction,query1) mysqli_query($connction,query2) mysqli_query($connction,query3)

我有大约6个查询需要成功执行。现在我使用mysqli\u query函数来执行所有查询。如何确保所有查询都成功执行?我尝试了一种“尝试捕捉”的方法,但它不起作用

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)

    }

这个查询有什么问题?有更好的方法吗?

您只需先混淆mysqli即可抛出异常。给你:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

默认情况下,
mysqli\u查询
返回
false
,但在查询失败时不会抛出异常

如果不使用异常模式,则需要检查返回值

例如:


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

if (mysqli_query($connction,query) === false) {
       // Check the error message and do rollback
}

如果您使用的是mysqli php函数,那么您可以像在MySQL中一样使用set auto commit、commit和roll back

例如

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

//execute your code 
/* commit insert */
$mysqli->commit()

如果要回滚,请使用

/* Rollback */
$mysqli->rollback();

你有没有读过关于
mysqli
扩展的文章?@zerkms请不要这么严格:)我花了一些时间才开始讨论这个问题,因为文档非常模糊。在这里,我认为mysqli不会有这个功能;-)这很好,但是这和问题有什么关系呢?
/* Rollback */
$mysqli->rollback();