0

我有以下代码:

$criteria=new CDbCriteria;
$criteria->condition = ' action_id 
IN(SELECT action_id FROM action_type WHERE action_name = \'EnableGame\') ';
$criteria->compare('task_id','= '.$taskData->task_id, false, 'AND');
$criteria->compare('value', '= '.$gameData->game_id, false, 'AND');
$enablingActions = TaskActions::model()->findAll($criteria); 

compare方法中task_idvalue不会与提供的值进行比较,但不会在函数中传递。以下是 Yii 如何将上面的代码转换为 SQL 查询:

Querying SQL: SELECT * FROM "task_actions" "t" 
WHERE 
  (( 
    action_id IN(SELECT action_id FROM action_type WHERE action_name = 'EnableGame'
  ) ) 
AND (task_id=:ycp0)) 
AND (value=:ycp1)

为什么我看到占位符:ycp0ycp1不是我设置的值?谢谢!

4

1 回答 1

3

因为占位符被数据库引擎替换为实际值,甚至 Yii 本身根本看不到查询的“最终”形式。

但是,有一个选项可以与查询并排记录参数值:将连接的enableParamLogging属性设置为true,并且值将作为同一消息的一部分记录(它继续“与...绑定”) .

于 2013-07-30T16:46:13.917 回答