Php PDO::MYSQL_ATTR_使用_缓冲_查询,并在准备好的语句中使用多个delete语句

Php PDO::MYSQL_ATTR_使用_缓冲_查询,并在准备好的语句中使用多个delete语句,php,mysql,pdo,Php,Mysql,Pdo,我试图使用一个准备好的语句从两个(临时)表中删除: public function clearTempTables() { static $delStmt = null; if (null == $delStmt) { $delStmt = $this->pdo->prepare("DELETE FROM product_string_ids;

我试图使用一个准备好的语句从两个(临时)表中删除:

public function clearTempTables()  
{  
   static $delStmt = null;  
    if (null == $delStmt)  
    {  
        $delStmt = $this->pdo->prepare("DELETE FROM product_string_ids;   
                                        DELETE FROM product_dimension_value_ids;");  
    }  

    $delStmt->execute();
}
调用此函数成功,但之后执行语句时,我收到以下错误:

SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active.  
Consider using PDOStatement::fetchAll().  
Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
在创建我的PDO对象时设置PDO::MYSQL_ATTR_USE_BUFFERED_QUERY(如文档和许多web示例所示)似乎没有效果,调用$delStmt->fetchAll()会导致“SQLSTATE[HY000]:General error”,这是有意义的,因为delete语句不应该返回需要获取的结果


我做错了什么?甚至可以像这样将多个SQL语句准备成一个语句吗?从性能的角度来看,这当然是有意义的,特别是对于大量查询而言,这些查询将在临时表上工作,然后只返回最终结果集。

Afaik不可能将多个语句作为一个(组合的)已准备语句来准备。
但是允许您指定多个表以从中删除行

$this->pdo->prepare("
  DELETE
    product_dimension_value_ids,product_string_ids
  FROM
    product_dimension_value_ids,product_string_ids
");

(现在已经测试过了)

谢谢。非常不幸的是,我不能将SQL语句捆绑在一起,因为这会限制我做其他事情,但是删除语法技巧有帮助。你知道PDO是如何处理存储过程的吗?它们本质上不只是收集语句吗?不,看起来从多个表中删除语法毕竟是无效的。