繁体   English   中英

db2_execute()之后,PHP DB2获取完整查询

[英]PHP DB2 Get Full Query after db2_execute()

我们正在使用db2_prepare和db2_execute在通用函数中准备查询。 我正在尝试一种调试方法来在“?” 之后获取完整的准备好的查询。 值已被db2_execute函数代替。

除了手动替换每个“'”以外,还有其他有效的方法吗? 我传递的参数? 即是否可以为db2_execute设置一个标志?

例:

$params = array('xyz','123');
$query = "SELECT * FROM foo WHERE bar = ? AND baz = ?";
$sqlprepared = db2_prepare($CONNECTION, $query);
$sqlresults = db2_execute($sqlprepared,$params);

我希望$ sqlresults包含完整的准备好的查询:

"SELECT * FROM foo WHERE bar = 'xyz' AND baz = '123'";

我浏览了文档,没有看到任何明显的方法来完成此操作,但我想一定有办法。

谢谢!

db2_execute()不会用值替换参数标记。 参数被发送到服务器并绑定到服务器上的准备好的语句。

CLI跟踪,它可以在客户端上启用按此处的说明 ,将包含实际的参数值。 请记住,跟踪严重影响了应用程序性能。

我最终写了一个循环来替换“?” 参数,然后在我的“调试”数组键中输出查询后使用简单的preg_replace进行查询:

$debugquery = $query;
foreach($params as $param) {
  $debugquery = preg_replace('/\?/',"'".$param."'",$debugquery,1);
}
return $debugquery;

这处理了我需要做的事情(打印最终查询以用于调试目的)。 由于性能影响,不应在生产中运行此命令,但对于查看服务器尝试执行的实际查询(如果得到意外结果)很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM