为什么PDO debugDumpParams截断查询

时间:2015-04-02 10:01:49

标签: php mysql sql pdo pdostatement

我发现同样的问题here但是没有答案,我在这里提供了更简单的例子,并再试一次......

代码:

<?php
$dbh = new PDO('mysql:dbname=test;host=127.0.0.1', 'root');
$sth = $dbh->prepare("
    SELECT '
        Dumps the informations contained by a prepared statement directly on the output. It will provide the SQL query in use, the number of parameters used (Params), the list of parameters, with their name, type (paramtype) as an integer, their key name or position, and the position in the query (if this is supported by the PDO driver, otherwise, it will be -1).
        This is a debug function, which dump directly the data on the normal output.
        Tip:
        As with anything that outputs its result directly to the browser, the output-control functions can be used to capture the output of this function, and save it in a string (for example).
        This will only dumps the parameters in the statement at the moment of the dump. Extra parameters are not stored in the statement, and not displayed.
    '
");
$sth->execute();
$sth->debugDumpParams();

结果:

SQL: [835] 
    SELECT '
        Dumps the informations contained by a prepared statement directly on the output. It will provide the SQL query in use, the number of parameters used (Params), the list of parameters, with their name, type (paramtype) as an integer, their key name or position, and the position in the query (if this is supported by the PDO driver, otherwise, it will be -1).
        This is a debug function, which dump directly the data on the normal output.
        Tip:
        As with anythi
Params:  0

为什么会发生,以及如何解决?
提前致谢!

2 个答案:

答案 0 :(得分:3)

我认为debugDumpParams完全是错误。它只是在标准输出中直接吐出数据!

所以我无论如何都不会使用它,并且为了记录目的要么启用mysql的通用日志,要么创建一个带有日志记录功能的PDO包装器(这个解决方案更便于移植)。

答案 1 :(得分:0)

Why it occurs? - 我没有找到任何关于它的信息。
How fix it? - 我没有找到任何使用原生PDO修复它的线索。

这个问题的主要目的是如何查看某些php脚本的所有查询, 我找到了实现这一目标的唯一方法 - to enable general log for mysql