0

In 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 とさまざまなクラスの上で動作します。そして、PDOStatement、およびbindParam:

PDOStatement::bindValue() とは異なり、変数は参照としてバインドされ、PDOStatement::execute() が呼び出されたときにのみ評価されます。

そのため、実行前に表示することはできません。

于 2012-06-29T12:45:14.540 に答える