Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当ATTR_EMULATE_准备将集设置为false并终止查询时,MySQL PDO空结果集_Php_Mysql_Pdo_Mysqlnd - Fatal编程技术网

Php 当ATTR_EMULATE_准备将集设置为false并终止查询时,MySQL PDO空结果集

Php 当ATTR_EMULATE_准备将集设置为false并终止查询时,MySQL PDO空结果集,php,mysql,pdo,mysqlnd,Php,Mysql,Pdo,Mysqlnd,当PDO::ATTR_EMULATE_PREPARES设置为false,并且在“发送数据”状态下终止查询(例如MySQL工作台->客户端连接->右键单击->终止查询),PDO“查询”或“执行”方法将返回空PDO语句。 PDO应该抛出异常(仅当PDO::ATTR_ERRMODE设置为PDO::ERRMODE_EXCEPTION时)或返回false而不是PDO语句 结果,您的应用程序接收到空的结果集,尽管该查询应该返回一些数据。没有办法处理那种情况。当您对收到的PDO语句运行errorCode()时

当PDO::ATTR_EMULATE_PREPARES设置为false,并且在“发送数据”状态下终止查询(例如MySQL工作台->客户端连接->右键单击->终止查询),PDO“查询”或“执行”方法将返回空PDO语句。 PDO应该抛出异常(仅当PDO::ATTR_ERRMODE设置为PDO::ERRMODE_EXCEPTION时)或返回false而不是PDO语句

结果,您的应用程序接收到空的结果集,尽管该查询应该返回一些数据。没有办法处理那种情况。当您对收到的PDO语句运行errorCode()时,会得到:“00000”,errorInfo()返回一个数组:

['00000', null, null]
我正在运行:MySQL 5.6.22,php5.6.4,pdo_-MySQL-mysqlnd 5.0.11-dev-20120503

这导致我假设PDO或MySQL中都存在bug

这里解释如下: 对于MySQL>=5.1.17,建议依赖MySQL并关闭模拟

是否不推荐使用PDO仿真

当我将应用程序保留为默认(启用)状态时,它可能会受到什么影响

我个人认为这是一个非常关键的问题,因为当问题发生时(查询执行失败等),您的应用程序认为没有数据,而实际上有一些数据。想象一下,你的应用程序没有触发提醒,提醒你给女友买生日花?纯粹的邪恶

注意

当查询在状态中中断时:

 "Copying to tmp table"
您将收到一条异常消息:

 "SQLSTATE[70100]: <<Unknown error>>: 1317 Query execution was interrupted"
“SQLSTATE[70100]::1317查询执行被中断”

即使在“发送数据”状态下终止查询执行,也会得到完全相同的异常,但PDO::ATTR_EMULATE_PREPARES必须为se to true。

终止查询和终止连接之间有区别吗?当终止连接时,会得到有效的PDO异常,消息:“SQLSTATE[HY000]:一般错误:2006 MySQL服务器已离开”