有没有办法查看准备好的查询,因为它将在数据库上执行?[复制]

Is there a way to see a prepared query as it will be executed on the database? [duplicate]

提问人:pilsetnieks 提问时间:11/20/2008 最后编辑:Communitypilsetnieks 更新时间:11/20/2008 访问量:6223

问:

这个问题在这里已经有答案了:
12年前关闭。

可能的重复项:
PDO 预准备的语句

我在 PHP 中使用 mysqli 扩展,我想知道,是否有任何方法可以查看准备好的查询,因为它将在服务器上执行,例如查询是这样的

select * from table1 where id = ? and name = ?

但我想在填写值后查看查询,如下所示:

select * from table1 where id = 20 and name = "John"
php mysql mysqli

评论

0赞 Jon Cram 11/20/2008
当您var_dump()mysqli_stmt对象时会发生什么?

答:

0赞 Alexandru Luchian 11/20/2008 #1

在哪里看到它? 如果这是你的代码,你有查询,并且你有准备好的参数,请单独记录它们或替换在原始查询字符串中。 如果绑定失败,则会出现错误,否则应期望“填充”与指定值相同的值。

7赞 DreamWerx 11/20/2008 #2

打开 mysql 查询日志记录,它会将所有查询记录到文本文件中供您查看。

2赞 troelskn 11/20/2008 #3

PDO准备的语句副本

简短的回答:不。准备好的查询永远不会转换为预期的查询。它由数据库服务器直接执行。您可以使用 mysql 的查询日志或 PDO 的 undocumented 函数 ,但两者都只是近似值。debugDumpParams

评论

2赞 Bill Karwin 11/21/2008
实际上,如果您启用 MySQL 查询日志记录,它确实会记录一个准备好的查询,并在其中插入参数值。古怪!
0赞 hash 11/20/2008 #4

大多数时候我都在调试mysqlquires:

$q = “select * from table1 where id = ”.$id.“ and name = ”.$name; 回声$q;

输出将生成分配给查询的所有变量。

希望我完全理解你,你想要什么。

评论

0赞 Bill Karwin 11/21/2008
我认为他的意思是当他准备“从表 1 中选择 * 其中 id = ?和 name = ?“,然后执行它,提供参数 $id 和 $name。
0赞 T30 12/20/2016
除非是数字,否则此查询将由于未带引号的字符串参数而失败。$name