【发布时间】:2012-06-22 18:25:30
【问题描述】:
可能重复:
Retrieve (or simulate) full query from PDO prepared statement
我不知道为什么我的查询返回 0 行。它实现了一些非常动态的搜索功能,以及许多 if/loop 语句等。因此要调试它,我想看看究竟是什么字符串正在发送到服务器。有没有办法通过 PHP 做到这一点?
有没有办法询问服务器“上次查询是什么”,或者告诉 PDO“告诉我你发送了什么”?
我看到一个使用str_replace 手动输入值来代替:fieldValue 的响应,但这可能是语法问题(或者可能是通过不正确的循环等),这种方法没有帮助.
使用bindValue(":fieldValue", $value);,如果有影响的话。
编辑
原来是一个简单的if ($var="true") { ...,应该是if ($var=="true") { ...。从这个意义上说,我猜 PHP 与 Java 不一样?无论哪种方式,问题仍然存在(因为我经常遇到这种情况)。我不得不使用一系列echo "You are Here"; 来找到这个错误,因为它在技术上是有效的,但不正确。如果我有最后的 SQL 语句,我可能会看到“哦,我的代码添加了 where column = true,一定是通过了错误的 IF...”。
【问题讨论】:
-
如果准备/绑定没有被模拟,你所说的查询在任何地方都不存在。然后,语句和绑定成为数据库的组成部分。但是,在您的开发服务器上启用
query_log(永远不要在生产中这样做)可能会对所做的工作有所了解。 -
嗯,就是这样;我不知道该尝试什么。我通常使用简单的
echo $sql来执行此操作,其中$sql是我的声明,但使用 PDO(我是新手),它只是向我显示SELECT column FROM table WHERE column = :fieldValue,如果 where 声明最终是,这对我没有帮助哪里出错了。 -
@StuckAtWork 你能告诉我们不工作的代码吗?