PDO :: MYSQL_ATTR_INIT_COMMAND似乎打亂了查詢,請嘗試自己。如果使用MYSQL_ATTR_INIT_COMMAND,PDO會拋出錯誤
以下:
$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
您的意思是「SET NAMES UTF8; SET CHARACTER SET UTF8; SET character_set_connection = UTF8; SET character_set_client = UTF8;」疑問?爲了能夠在不修改mysql.cnf的情況下使用utf8編碼。不管怎麼說,還是要謝謝你! –
作爲一個便箋,您可能需要utf8mb4而不是utf8。請參閱https://mathiasbynens.be/notes/mysql-utf8mb4 – bodo