gpt4 book ai didi

php - 如果使用 MYSQL_ATTR_INIT_COMMAND,PDO 抛出错误

转载 作者:行者123 更新时间:2023-11-29 01:08:54 28 4
gpt4 key购买 nike

PDO::MYSQL_ATTR_INIT_COMMAND 似乎分解了查询,试试你自己的。

以下内容:

  $connection = new \PDO("mysql:host=localhost;dbname=php_orm_test", "dev", "dev",[
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8; SET CHARACTER SET UTF8; SET character_set_connection=UTF8; SET character_set_client=UTF8;"
]);
$statement = $connection->prepare("describe users");
$statement->execute();
$statement->fetchAll(\PDO::FETCH_ASSOC);
var_dump($statement->errorInfo());
$statement->closeCursor();

抛出:

array(3) {
[0]=>
string(5) "00000"
[1]=>
int(2014)
[2]=>
string(269) "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."
}

如果我删除 MYSQL_ATTR_INIT_COMMAND 一切正常......有什么想法吗?

请注意,即使这样也行不通...

    PDO::MYSQL_ATTR_INIT_COMMAND => self::DRIVER_INIT,
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true

最佳答案

您使用的是 PHP >= 5.3.6,因此将字符集添加到 dsn 并且不要使用 PDO::MYSQL_ATTR_INIT_COMMAND。此外,我认为您只能使用 PDO::MYSQL_ATTR_INIT_COMMAND 执行 1 个查询。这可能是问题所在。

mysql:host=localhost;dbname=php_orm_test;charset=utf8

关于php - 如果使用 MYSQL_ATTR_INIT_COMMAND,PDO 抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17891191/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com