CDbExpression params

Уже исправленные репорты или принятые предложения
Ответить
tomdelonge
Сообщения: 12
Зарегистрирован: 2010.03.07, 14:05
Контактная информация:

CDbExpression params

Сообщение tomdelonge »

Здравствуйте, возникла такая проблема при работе с CDbExpression. При составлении выражения с параметром запрос не выполняется.
Так не работает:

Код: Выделить всё

$expression=new CDbExpression('gallery_id IN(:gallery_id)', array(':gallery_id'=>$gallery_id));
 
, а так работает:

Код: Выделить всё

$expression=new CDbExpression('gallery_id IN('.$gallery_id.')');
 
В API написано:
Starting from version 1.1.1, one can also specify parameters to be bound for the expression. For example, if the expression is 'LOWER(:value)', then one can set params to be array(':value'=>$value).

Код: Выделить всё

public void __construct(string $expression, $params=array ( ))
 
Версия как раз 1.1.1, в чем может быть проблема?
Последний раз редактировалось tomdelonge 2010.03.17, 20:47, всего редактировалось 2 раза.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: CDbExpression params

Сообщение samdark »

Какая ошибка?
tomdelonge
Сообщения: 12
Зарегистрирован: 2010.03.07, 14:05
Контактная информация:

Re: CDbExpression params

Сообщение tomdelonge »

Вот такой эксепшн викидывает:
CDbCommand failed to execute the SQL statement: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: CDbExpression params

Сообщение samdark »

Похоже на баг. Если не трудно, заполните тикет: http://code.google.com/p/yii/issues/list. Желательно на английском, но можно и на русском.
tomdelonge
Сообщения: 12
Зарегистрирован: 2010.03.07, 14:05
Контактная информация:

Re: CDbExpression params

Сообщение tomdelonge »

Ок, как освобожусь отправлю тикет и отпишусь тут.
Hett
Сообщения: 127
Зарегистрирован: 2011.04.25, 07:18

Re: CDbExpression params

Сообщение Hett »

Аналогичная проблема )

Код: Выделить всё

        $this->insert('{{user}}', array(
            'email'=>'admin@admin.admin',
            'date_update'=>0,
            'ip_create'=>new CDbExpression("INET_ATON(':ip')", array(':ip'=>'127.0.0.1')),
        )); 
ошибка та же
lnghost
Сообщения: 134
Зарегистрирован: 2011.07.26, 18:05
Откуда: Воронеж
Контактная информация:

Re: CDbExpression params

Сообщение lnghost »

Аналогичная проблема. При использовании параметров в CDbExpression вылезает ексепшн Invalid parameter number. В чем таки косяк?
Конференция: yii@conference.jabber.ru Сайт: http://kamaran.ru
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: CDbExpression params

Сообщение samdark »

А какой SQL формируется?
Hett
Сообщения: 127
Зарегистрирован: 2011.04.25, 07:18

Re: CDbExpression params

Сообщение Hett »

В приведенном мной ранее примере была ошибка.

to TS:

Код: Выделить всё

CDbExpression('gallery_id IN(:gallery_id)', array(':gallery_id'=>$gallery_id));
Тут уже в коде ошибка, если $gallery_id - это строка со значениями разделенными запятой, то итоговый запрос будет вида:

Код: Выделить всё

gallery_id IN('1,2,3')
Если же это скаляр, то какой смысл использовать IN
Ответить