我们有一个大型 php 应用程序并尝试调试慢速 sql 查询,我们希望能够自动注释实际调用 sql 查询的文件,例如:
"select /* filename.php line 234*/ `ID`,`Email`, `NickName`, `AlertBusiness`,`City` from People where ?=? and limit ?,?"
/* filename.php line 234*/ 是动态插入的。大概
在php中有一个debug_backtrace,http ://php.net/manual/en/function.debug-print-backtrace.php
哪个可以手动完成:
<?php
$query = sprintf("INSERT INTO EventLog (Trace) VALUES ('%s')",
mysql_real_escape_string(join("\n", debug_backtrace())) );
mysql_query($query);
?>
但希望有一些更核心的东西,比如数据库驱动程序。
MediaWiki 也有类似的功能。 http://www.mediawiki.org/wiki/Manual:How_to_debug
You can also enable backtrace on SQL error by setting $wgShowDBErrorBacktrace:
$wgShowDBErrorBacktrace = true;"
PDO 驱动程序有一个转储语句,但这只是查询,而不是谁调用它 http://php.net/manual/en/pdostatement.debugdumpparams.php
您如何在运行它的 php 页面的上下文中最好地调试 sql?