在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();
我想打印bind param中包含的查询 例如user_id = 1然后
SELECT * from users WHERE user_id = 1
答案 0 :(得分:2)
虽然在执行之前不可能使用bind params查看准备好的查询,但是当然可以在日志中检查它。你只需要启用MySQL的所谓'general_query_log';有几种方法可以做到这一点,我想,最简单的就是......
SET GLOBAL general_log = 'ON';
...在MySQL shell中。然后你可以尝试你的查询;它将被记录在mysql.general_log
中,因此您可以使用类似......
SELECT * FROM mysql.general_log;
不要忘记在不再需要时禁用日志记录:
SET GLOBAL general_log = 'OFF';
这里是关于它的more info。
答案 1 :(得分:1)
Yii在PDO和各类课程之上工作。使用PDOStatement和bindParam
:
与PDOStatement :: bindValue()不同,变量被绑定为引用,并且仅在调用PDOStatement :: execute()时进行计算。
所以在执行之前你将无法看到它。