Я использую Yii 1, я хочу построить следующий запрос:
$a = Model::model()->findAllBySql( 'SELECT * FROM table WHERE name like "%'.$_GET['name'].'%"' ); 
Чтобы предотвратить внедрение sql, я написал следующее:
  $a = Model::model()->findAllBySql( 'SELECT * FROM table WHERE name like "%:name%"', array("name"=>$_GET['name']) ); 
но он не возвратил данных. Есть ли ошибки в этом запросе?
Когда заполнитель цитируется, он не является заполнителем, это буквальное значение. Попробуйте это так:
 $a = Model::model()->findAllBySql( 'SELECT * FROM table WHERE name like :name', array(":name"=> '%' . $_GET['name'] . '%') ); 
Драйвер в настоящее время автоматически добавляет двоеточия, но это может не произойти в будущем, лучше всего совместить имя с заполнителем.