是否可以询问PDO以查明查询当前是否有效?

时间:2018-05-16 15:55:19

标签: php pdo

是否可以询问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#7006​​6意外"在其他无缓冲的查询时无法执行查询"
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); //以防万一

0 个答案:

没有答案