Php Mysqli事务不工作
我有这个代码,试图使用事务Php Mysqli事务不工作,php,mysqli,Php,Mysqli,我有这个代码,试图使用事务 try { $mysqli->autocommit(FALSE); // Line (1) $queries = $query_delete_atividades . $query_insert_atividades . "SET NAMES 'utf8';" . $query_anuncio; if ($mysqli->multi_query($queries) === TRUE) { $resultado = '[{ "r
try
{
$mysqli->autocommit(FALSE); // Line (1)
$queries = $query_delete_atividades . $query_insert_atividades . "SET NAMES 'utf8';" . $query_anuncio;
if ($mysqli->multi_query($queries) === TRUE) {
$resultado = '[{ "resultado" : "ok"}]';
return $resultado;
} else {
return "";
}
$mysqli->autocommit(TRUE); // Line (2)
mysqli_commit($mysqli); // Line (3)
$query_error = mysqli_error($mysqli);
if (strlen($query_error) == 0)
{
$resultado = '[{ "resultado" : "ok"}]';
return $resultado;
}
}
catch (Exception $e)
{
mysqli_rollback($mysqli); // Line (4)
}
在变量$queries中,我有三种类型的查询:
- 更新
- 删除
- 一些插页
谢谢。除非您不更新此代码
return
返回前的逻辑commit
if ($mysqli->multi_query($queries) === TRUE) {
$resultado = '[{ "resultado" : "ok"}]';
return $resultado;
} else {
return "";
}
执行此代码后,您将控制权从try块返回到上一个函数,因此要继续执行此代码,您需要更改提交位置,如下所示:
if ($mysqli->multi_query($queries) === TRUE) {
$resultado = '[{ "resultado" : "ok"}]';
mysqli_commit($mysqli); // Line (3)
/* commit internally sets auto commit to true so $mysqli->autocommit(TRUE); // Line (2) not required */
return $resultado;
} else {
return "";
}
你不需要打电话。问题依然存在。