CodeIgniter活动查询的行为方式出乎意料


CodeIgniter Active Query behaves in an unexpected way

我已经放置了以下代码块来从数据库中获取项目。这是代码:

$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。这让我从一大早就感到困惑。我不知道还有什么解决办法。

我还使用$db->last_query()打印出了生成的CodeIgniter SQL查询,供您查看和检查。

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

尝试使用即添加的( )

`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

$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();