SQL LIKE

Хотел сделать поиск по полю, но засада, Yii не хочет понимать % в конструкции LIKE.

Делал так:




     $models=map_city::model()->findAllBySql('SELECT id,name FROM map_city WHERE name LIKE `'.mysql_escape_string($_GET['cname']).'%` ORDER BY name');

     

и так:




      $models=map_city::model()->findAllBySql('SELECT id,name FROM map_city WHERE name LIKE `:name%` ORDER BY name',array(':name'=>$_GET['cname']));

      

И даже так:




     $criteria=new CDbCriteria;

     $criteria->condition='name LIKE `:name%`';

     $criteria->params=array(':name'=>$_GET['cname']);

      $models=map_city::model()->findAll($criteria);

   

Во всех случаях появляется ошибка:


CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column & #039;Вол%& #039; in & #039;where clause'

Кто-нибудь уже стакивался с этим? Как решили?

В одном из своих приложений с успехом использую LIKE с символом ‘%’:


$c = new CDbCriteria(array('condition'=>$field.' LIKE :value', 'params'=>array(':value'=>$v)))

Возможно, проблема в кодировке.

  1. Попробуй установить параметр CDbConnection.charset в "utf8"

  2. Файл контроллера тогда должен быть в UTF8 без BOM.

и где тут %? потом передается через $v?

Спасибо поборол:




            $criteria=new CDbCriteria;

            $criteria->condition='name LIKE :name';

            $criteria->params=array(':name'=>$_GET['cname'].'%');

            $models=map_city::model()->findAll($criteria);



Да, извиняюсь, самое главное забыл написать :)