Как предотвратить инъекцию mysql при использовании предложения mysql IN без activeRecord в Yii?

У меня есть массив с идентификаторами, которые я получаю от клиента. И я хочу использовать эти идентификаторы в моем sql-запросе с предложением IN . Но этот запрос идет по таблице, у которой нет модели. Таким образом, никакой активной записи (критерии) не существует.

** Таблица userTasks **

 -------------------- | idUser | idTasks | ---------+---------- | 1 | 1 | ---------+---------- | 1 | 2 | ---------+---------- | 1 | 3 | ---------+---------- 

Первый подход не работает, поскольку параметры всегда считаются строками. Итак :tasks – это строка '1,2,3' вместо списка идентификаторов, разделенных запятыми:

 $sql = 'SELECT COUNT(*) AS matches FROM userTasks WHERE idUser = :idUser AND idTask IN (:tasks)'; $result = Yii::app()->db->createCommand($sql) ->queryRow(true,[ ':idUser' => $idUser, ':tasks' => implode(',', $tasks)]); //$tasks is a simple array of ids [1,2,3] 

Так что мой обход:

 foreach($tasks as $task) //$tasks is a simple array of ids [1,2,3] { $inTasks[] = (int) $task; } $sql = 'SELECT COUNT(*) AS matches FROM userTasks WHERE idUser = :idUser AND idTask IN (' . implode(',', $inTasks . ')'; $result = Yii::app()->db->createCommand($sql) ->queryRow(true,[':idUser' => $idUser]);