在Yii查询构建器中使用IN进行故障

时间:2012-08-29 15:06:12

标签: mysql yii query-builder

我使用Yii Framework,我需要在很多条件下构建困难的查询。 我正在填充2个数组$条件和$值。 我有一个问题。 以下是示例 当我使用

$usersId = '1,2';
$conditions[] = 'e.user_id IN(:usersId)';
$values[':usersId'] = $usersId;

我只获得user_id = 1

的值

当我不使用选项并手动编写时

$usersId = '1,2';
$conditions[] = 'e.user_id IN(' . $usersId . ')'; 

没问题。

当然我可以使用二次构造,但似乎不太好。

3 个答案:

答案 0 :(得分:2)

你应该addInCondition

$criteria->addInCondition('e.user_id',array(1,2));

答案 1 :(得分:2)

Yii方式是使用CDbCriteria addInCondition函数

$usersId = array(1,2); //must be array
$criteria=new CDbCriteria();
$criteria->addInCondition('user_id',$usersId);

$result = MyModel::model()->findAll($criteria);

答案 2 :(得分:1)

$ values [':usersId'] = $ usersId;

如果我理解你的错误,你可以使用yii中的BindParam函数吗?

而不是这个 - $ values [':usersId'] = $ usersId;

写这个 - $ command-> BindParam(':usersId',$ usersId,PDO :: PARAM_STR);

很简单,您将参数绑定到命令语句。

希望它有效!