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中,我有三种类型的查询:

  • 更新
  • 删除
  • 一些插页
如果我对第(1)、(2)、(3)和(4)行进行注释,则所有查询都会正确运行(更新、删除和插入)

如果这些行未注释,则数据库中不会发生任何事情

我的问题是正确的,并得到了验证

这个代码正确吗?我做错了什么


谢谢。

除非您不更新此代码
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 "";
}

你不需要打电话。问题依然存在。