0

在 Yii 中,如何在执行之前显示呈现的查询。

$sql="SELECT * from users WHERE user_id = :user_id";
    $command=Yii::app()->db->createCommand($sql);
    // replace the placeholder ":user_id" with the actual username value
    $command->bindParam(":user_id",$user_id,PDO::PARAM_INT);
    echo "<br/>".$command->getText();

我想打印绑定参数中包含的查询,例如 user_id = 1 然后

SELECT * from users WHERE user_id = 1
4

2 回答 2

2

虽然在执行之前不可能看到带有绑定参数的准备好的查询,但当然可以在日志中检查它。您只需要启用 MySQL 的所谓“general_query_log”;有几种方法可以做到这一点,我想最简单的方法是......

SET GLOBAL general_log = 'ON';

...在 MySQL 外壳中。然后你可以试试你的查询;它将按原样记录mysql.general_log,因此您可以使用类似...的内容进行检查

SELECT * FROM mysql.general_log;

不要忘记在不再需要时禁用日志记录:

SET GLOBAL general_log = 'OFF';

这里有更多关于它的信息。

于 2012-06-29T12:59:33.810 回答
1

Yii 工作在 PDO 和各种类之上。并使用PDOStatementbindParam

与 PDOStatement::bindValue() 不同,该变量被绑定为引用,并且只会在调用 PDOStatement::execute() 时进行评估。

所以在执行之前你将无法看到它。

于 2012-06-29T12:45:14.540 回答