Activerecord 如何使用';在(1,2,3)和#x27;和芬德尔?
我需要从数据库中找到几个学生,他们的主键用逗号分隔 通常情况下,使用SQL时会出现以下情况:Activerecord 如何使用';在(1,2,3)和#x27;和芬德尔?,activerecord,yii,Activerecord,Yii,我需要从数据库中找到几个学生,他们的主键用逗号分隔 通常情况下,使用SQL时会出现以下情况: $cleanedStudentIdStringList = "1,2,3,4"; SELECT * FROM Student WHERE id IN ($cleanedStudentIdStringList) Yii的ActiveRecord似乎在结果SQL语句中的绑定参数周围插入了一个引号,这会导致在使用参数绑定时查询失败 $students = Student::model()->findA
$cleanedStudentIdStringList = "1,2,3,4";
SELECT * FROM Student WHERE id IN ($cleanedStudentIdStringList)
Yii的ActiveRecord似乎在结果SQL语句中的绑定参数周围插入了一个引号,这会导致在使用参数绑定时查询失败
$students = Student::model()->findAll("id IN ({$_POST['studentIds']})");
这是可行的,但不使用安全参数绑定
$students = Student::model()->findAll("id IN ({$_POST['studentIds']})");
有没有办法仍然使用参数绑定并在一个查询中只获取几行?您也可以这样做:
$criteria = new CDbCriteria();
$criteria->addInCondition("id", array(1,2,3,4));
$result = Student::model()->findAll($criteria);
并在数组中使用所需的任何值
Aleksy您还可以使用
findAllByAttributes
方法:
$a=array(1,2,3,4);
$model = Student::model()->findAllByAttributes(array("id"=>$a));