我面临一个交易的奇怪问题,这是代码:
$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);
它完美运行,混合预处理语句和multi_query时有什么问题吗?
我需要多查询,因为$sql
变量包含多个;
分隔的sql语句。有什么方法可以防止这个问题吗?