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语句。有什么方法可以防止这个问题吗?

我认为这就是创建多用户查询的原因。