Lea*_*oot 6 php mysql debugging pdo
我正在进行从mysql_*调用到使用PDO调用的更改,并且无法在开发新代码时弄清楚如何调试我的实际SQL.
在mysql_*调用下我可以在PHP函数中编写一些SQL,并且可以echo使用实际的SQL来查看处理器正在使用的内容.
我无法在PDO库中找到这样的野兽.debugDumpParams看起来应该如此,但它不会吐回绑定语句.
我遇到的问题的例子:
在我的第一次尝试中,我绑定了一个字符串,并在SQL语句中包含引号,尽管绑定了一个data_type字符串 - 它只是通过fluke我尝试从语句中删除引号; 调试会让我看到那里有一个重复的引用.
我将一些代码从一个项目复制到另一个项目,并意外忘记更正数据库名称.当然,SQL失败了,因为其他数据库中不存在这些表.但该程序刚刚返回了正确的错误结果.在PHP日志或MySQL日志中没有任何地方或任何地方,我得到一个提示,表我不在寻找它的地方.
那么,其他人如何为PDO SQL调用进行调试呢?我错过了什么?:)
对于第一个问题,检查查询确实很困难。除了在数据库服务器上记录查询之外,您对此无能为力。原因是准备好的查询并不(总是)简单地将数据连接到查询中。重点是数据与查询分开发送。您可以通过访问查询字符串$yourStatement->queryString。它只会显示带有参数的查询。
对于第二个问题,默认情况下,发生错误时 PDO 不会引发异常。由您来检查它们。不过你可以改变这一点。 http://php.net/manual/en/pdo.error-handling.php
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过查询执行周围的 try/catch 块来捕获问题。