具有预准备语句和multi_query的mysqli事务

时间:2014-08-26 07:34:00

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

0 个答案:

没有答案