调试自定义数据库查询


8

是否有方便的方法来询问特定的数据库对象以打印其查询?

时不时地,我在一个模块中编写一个DBTNG db_op(),而且经常,我不太正确地查询。

我知道devel可以输出查询日志,但这就是所有查询,在这种情况下,这常常是一个问题。

我想要做

$result = db_select('node', 'n')->fields('n')->execute();
dpm($result->queryWithParameters);
dpm($result->finalQuery);

Answers:


13

dpq()开发模块中有一个功能似乎可以满足这一需求。

从DBTNG查询对象中打印SQL字符串。包括引用的参数。


5
如果可以的话,我会给这个+100,以前从未见过该功能
Clive

3
如果您提供赏金,您本可以拥有。;)
kiamlaluno

2

我知道这是一个老问题,但是希望这个答案可能对其他人有用:基本上Drupal核心具有自己的DatabaseLog类。您可以在没有可用的Devel模块的情况下使用它(例如,可能对慢查询进行生产调试吗?):

Database::startLog('my_custom_key');
// do some SQL operations here...
// print the queries
print_r(Database::getLog('my_custom_key'));
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.