2013-12-07 7 views
0

Я поместил следующий блок кода для извлечения элементов из базы данных. Вот код:CodeIgniter Active Query ведет себя непредсказуемым образом

$db->where("type =", 1); 
$db->where("status", 1); 
$db->or_where("status", 2); 
$db->order_by("id", "DESC"); 
$dbinfo = $db->get("ads")->result_array(); 

Теперь, основываясь на приведенном выше коде, ожидается, чтобы увидеть этот пункт, тип которого равен 1, и статус которого равен 1, или 2. Но выбирает элементы, типы также кроме 1. Это смутило меня с раннего утра. Я больше не знаю решения.

Я также распечатал сгенерированный SQL-запрос CodeIgniter, используя $db->last_query() для просмотра и проверки.

SELECT * FROM (`ads`) WHERE `type` = '1' AND `status` = 1 OR `status` = 2 ORDER BY `id` DESC 

ответ

0

попытаться использовать ( добавлен т.е. )

`type` = '1' AND (`status` = 1 OR `status` = 2) 

вместо

`type` = '1' AND `status` = 1 OR `status` = 2 

Ссылка: http://ellislab.com/codeigniter/user-guide/database/active_record.html

+0

Как это должно быть реализовано с использованием CodeIgniter? –

+0

$ this-> db-> где ('(status = 1 OR status = 2)', null, false); –

+0

спасибо, это прекрасно –

0

$this->db->or_where('id >', $id);
$db->where("type =", 1);
$db->where("status", 1);
$db->or_where("status >", 2);
$db->order_by("id", "DESC");
$dbinfo = $db->get("ads")->result_array();

Смежные вопросы