Php 带有预处理语句和多线程查询的mysqli事务
我在交易中遇到了一个奇怪的问题,代码如下:Php 带有预处理语句和多线程查询的mysqli事务,php,mysqli,prepared-statement,mysqli-multi-query,Php,Mysqli,Prepared Statement,Mysqli Multi Query,我在交易中遇到了一个奇怪的问题,代码如下: $mysqli = $this->getMysqli(); //Avoid Autocommitting $mysqli->autocommit(FALSE); $mysqli->begin_transaction(); $insertStatment = $mysqli->prepare('INSERT INTO '.$this->table.' (name, applie
$mysqli = $this->getMysqli();
//Avoid Autocommitting
$mysqli->autocommit(FALSE);
$mysqli->begin_transaction();
$insertStatment = $mysqli->prepare('INSERT INTO '.$this->table.' (name, applied_at) VALUES (?, NOW())');
try
{
$mysqli->multi_query($sql);
$insertStatment->bind_param('s', $name);
$insertStatment->execute();
$insertStatment->close();
$mysqli->commit();
$mysqli->close();
return TRUE;
}
catch (Exception $e)
{
$mysqli->rollBack();
return $e->getMessage();
}
commit()会完全忽略$insertStatement。如果我评论这一行:
$mysqli->multi_query($sql);
它工作得很好,在混合准备好的语句和多个查询时有什么问题吗?
我需要多个查询,因为
$sql
变量包含多个代码>分隔的sql语句。有什么方法可以防止这个问题吗?我认为这就是创建多用户查询的原因。