我需要从数据库中获取几个学生,并且我的主键位于以逗号分隔的字符串中。
通常使用SQL就像:
$cleanedStudentIdStringList = "1,2,3,4";
SELECT * FROM Student WHERE id IN ($cleanedStudentIdStringList)
Yii的ActiveRecord似乎在生成的SQL语句中围绕绑定参数插入单引号,这会导致查询在使用参数绑定时失败。
这样可行,但不使用安全参数绑定。
$students = Student::model()->findAll("id IN ({$_POST['studentIds']})");
有没有办法仍然使用参数绑定并在单个查询中只获取几行?
答案 0 :(得分:31)
你也可以这样做:
$criteria = new CDbCriteria();
$criteria->addInCondition("id", array(1,2,3,4));
$result = Student::model()->findAll($criteria);
并在数组中使用您需要的任何值。
Aleksy
答案 1 :(得分:22)
您也可以使用findAllByAttributes
方法:
$a=array(1,2,3,4);
$model = Student::model()->findAllByAttributes(array("id"=>$a));