php - Yii 如何在执行之前显示渲染的查询

标签 php mysql yii

在 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)参数中包含的查询 例如 user_id = 1 那么

SELECT * from users WHERE user_id = 1

最佳答案

虽然在执行之前不可能看到带有绑定(bind)参数的准备好的查询,但当然可以在日志中检查它。你只需要启用 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关于它。

关于php - Yii 如何在执行之前显示渲染的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11261628/

相关文章:

php - 存储在数组中或使用多个数据库查询

mysql - "INNER JOIN"或 "IN"。哪个更快?

php - 从数据库中获取一个值,并使用 for 循环填充 php 中的下拉菜单

python - 使用 Python 从 MySQL 检索整数以执行数学函数

Java 向 PHP 服务器发送 POST 数据被 accessRules 方法阻止

php - 授予对 Yii2 模块的访问权限

php - SQLSTATE[HY093] : Invalid parameter number: parameter was not defined

php - 对子集合的操作

php - 使用 bindParam 的 SELECT 查询不返回任何内容

php - 从外部 URL 获取数据时,file_get_contents 是否算作综合浏览量?