是否可以询问PDO以确定查询当前是否有效?
ANSWER = 否
请尝试setAttribute( PDO::MYSQL_ATTR_USE_BUFFERED_QUERY , true);
,以防它适用于您的情况
- > closeCursor()在可疑动词应该有帮助之后,你必须编写代码,例如
return $pdoStatement->rowCount()===1;
怀疑动词
->quote() Slight possibility if connection used like mysql_real_escape_string()
->query() High risk - use ->closeCursor()
->fetch() Highest risk - use ->closeCursor()
->fetchAll() should be safe but errors reported to Stack Overflow
->rowCount() **THIS** was causing my problem
组织bug搜索使用debug_backtrace()
在FATAL ERROR之前在线
使用该列表回溯执行添加 - > closeCursor()
在每个嫌疑人动词行之前
保存
测试
如果仍然得到FATAL ERROR一次修复下一个动词
发现错误行后,您可以删除debug_backtrace()
如果这不起作用,我会想出所有想法,因为失败会在执行路径的某个地方创建。
PHP PDO MySQL似乎忽略了这些困难
Bug#70066意外"在其他无缓冲的查询时无法执行查询"
Status = OPEN
网址= https://bugs.php.net/bug.php?id=70066
解决方法=解决方案是使用exec()而不是query(),但我认为它是bug,因为没有其他活动查询。
Bug#71145 init命令中的多个语句触发无缓冲的查询错误
Status = OPEN
网址= https://bugs.php.net/bug.php?id=71145
解决方法= SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci,SESSION sql_mode = traditional;
错误#74584关于意外触发的有效无缓冲查询的错误
Status = OPEN
网址= https://bugs.php.net/bug.php?id=74584
说明
下面的测试用例中会抛出异常。
- 仿真准备必须为OFF
- " LOCK TABLE"触发错误,例如"设置@foo =' bar'"不是
在这种情况下,我认为没有理由发生错误。
重要
产生的错误是致命错误
这意味着该程序 - >
......停止死亡
...使用try(){} catch($ e){}阻止
无法处理
这将提供发现如何修复错误的信息
"一般错误:2014无法在其他无缓冲的情况下执行查询 查询处于活动状态"
希望这会短路查看所有代码库以找到错误。
目前我正在尝试解决由
生成的此错误$statement = pdo->prepare( $sql );
这意味着整个代码库都是可疑的
为什么这与其他所有请求都不同?
注意:在prepare()阶段生成错误
NOT query()
NOT fetch()和
不是fetchAll()
NOT - > bind(':name',$ value,PDO :: PARAM_STR)
这意味着我不是"执行查询"当我收到那条消息时。
我问,因为Stack Overflow对错误有很多请求,但没有相关解决方案
注意:不工作
$ pdo-> setAttribute(PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY,true);
$ pdo-> setAttribute(PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY,false); //以防万一