PHP PDO - 关闭语句 - 不能创建超过max_prepared_stmt_count语句

时间:2016-09-01 10:51:33

标签: php mysql pdo

如何使用PDO关闭声明?如果我检查一般MySQL日志,我从未遇到过关闭命令。 (command_type:Close stmt)。

截至目前,MySQL抛出"无法创建超过max_prepared_stmt_count的语句"经过一些这样的询问之后。

奇怪的是PDO准备查询,即使没有任何准备。为什么不直接执行查询(command_type:Execute)?

片段

// Executes a SQL query and returns the PDO statement
$statement = $pdo->query(sprintf('CALL TEST_PROCEDURE(%s)', implode(',', $parameters)));

// Retrieve the result of the query
$result = current($statement->fetchAll(PDO::FETCH_OBJ));

$statement = null;

一般日志

select * from mysql.general_log where argument like "%call%" \G;
...
  event_time: 2016-09-01 10:34:40
   user_host: root[root] @ localhost [127.0.0.1]
   thread_id: 4111
   server_id: 0
command_type: Prepare
    argument: CALL TEST_PROCEDURE(234,'989',1,'3353' ....)
*************************** 2. row ***************************
command_type: Execute
    argument: CALL TEST_PROCEDURE(234,'989',1,'3353' ....)

1 个答案:

答案 0 :(得分:0)

您可以通过调用$statement->closeCursor();

显式关闭连接