Php 有没有一种方法可以查看准备好的查询,因为它将在数据库上执行?

Php 有没有一种方法可以查看准备好的查询,因为它将在数据库上执行?,php,mysql,mysqli,Php,Mysql,Mysqli,可能重复: 我正在使用PHP中的mysqli扩展,我想知道,是否有任何方法可以看到准备好的查询,因为它将在服务器上执行,例如,查询是这样的 select * from table1 where id = ? and name = ? 但我希望在填充值后看到查询,如下所示: select * from table1 where id = 20 and name = "John" 在哪里看到它? 如果是您的代码,您拥有查询和准备好的参数,请单独记录它们或替换为原始查询字符串。 如果绑定失败,您

可能重复:

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

select * from table1 where id = ? and name = ?
但我希望在填充值后看到查询,如下所示:

select * from table1 where id = 20 and name = "John"
在哪里看到它? 如果是您的代码,您拥有查询和准备好的参数,请单独记录它们或替换为原始查询字符串。 如果绑定失败,您将得到一个错误,否则您应该期望输入与指定值相同的值。

打开,它将把所有查询记录到一个文本文件中供您查看。

重复


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

这是我调试mysql时的大多数要求:

$q=“从表1中选择*,其中id=“.id.”和name=“.name;”; echo$q

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


希望我能准确地理解您的意思。

当您将mysqli\u stmt对象变为var_dump()时会发生什么?实际上,如果启用MySQL查询日志记录,它会记录一个准备好的查询,并在其中插入参数值。古怪的我想他的意思是,当他准备“从表1中选择*,其中id=?和name=?”并随后执行它时,提供参数$id和$name。除非
$name
是一个数字,否则此查询将由于未加引号的字符串参数而失败。