Запрос на обновление активной записи Codigniter принимает старое предложение where

У меня есть следующий запрос

$this->db->set('registerStep', $param)
 ->where('id = ',$user_id)
 ->update($this->table_name);

Над запросом создается ниже код sql. хотя я поставляю только одно условие.

 UPDATE `users` SET `registerStep` = 2 WHERE `id` = 33 AND `id` = '165'

Я думаю, что активная запись использует какое-то кешированное условие where, есть ли способ освободить условие where.
Я пытался использовать

$this->db->flush_cache();

Но это не помогает.


person Mukesh Yadav    schedule 21.02.2012    source источник
comment
Попробуйте var_dump для $user_id, чтобы увидеть, что он установлен прямо перед этой строкой.   -  person Joachim Isaksson    schedule 21.02.2012
comment
Почему бы вам не попробовать $this-›db-›where('id', $id); $this-›db-›update('users', $param);   -  person The Alpha    schedule 21.02.2012
comment
Я пробовал $this->db->where('id', $id); $this->db->update('users', $param);, но это не помогает   -  person Mukesh Yadav    schedule 10.03.2012


Ответы (2)


http://codeigniter.com/user_guide/database/active_record.html#update

->where('id = ',$user_id)

это неверно.

->where('id',$user_id)

верно.

person stormdrain    schedule 21.02.2012

Ваш запрос полностью корректен. Но я верю, что вы использовали $this->db->where() перед текущим запросом. Используйте следующий код, и вы увидите все ранее определенные операторы «где»:

print_r($this->db->ar_where);
$this->db->set('registerStep', $param)
     ->where('id = ',$user_id)
     ->update($this->table_name);
person Mikhail    schedule 22.02.2012