php – Codeigniter活动记录在哪里不起作用
发布时间:2020-12-13 21:49:13 所属栏目:PHP教程 来源:网络整理
导读:我使用活动记录运行CodeIgniter.下面是我的表格结构: id (int) user (int) is_complete (tinyint)------------------------------------------------1 24 12 24 13 24 NULL4 24 05 24 0 情况1 $this-db-where('user',24); 查询: SELECT * FROM `table` WHE
我使用活动记录运行CodeIgniter.下面是我的表格结构:
id (int) user (int) is_complete (tinyint) ------------------------------------------------ 1 24 1 2 24 1 3 24 NULL 4 24 0 5 24 0 情况1 $this->db->where('user',24); 查询: SELECT * FROM `table` WHERE `user` = 24 工程和退货: id user is_complete -------------------------- 1 24 1 2 24 1 3 24 NULL 4 24 0 5 24 0 案例2 $this->db->where('user',24); $this->db->where('is_complete',1); 查询: SELECT * FROM `table` WHERE `user` = 24 AND `is_complete` = 1 工程和退货: id user is_complete -------------------------- 1 24 1 2 24 1 案例3 $this->db->where('user',24); $this->db->where('is_complete !=',1); 查询: SELECT * FROM `table` WHERE `user` = 24 AND `is_complete` != 1 不起作用并且正在返回: id user is_complete -------------------------- 4 24 0 5 24 0 案例4 $this->db->where('user',24); $this->db->where('is_complete <>',1); 查询: SELECT * FROM `table` WHERE `user` = 24 AND `is_complete` <> 1 不起作用并且正在返回: id user is_complete -------------------------- 4 24 0 5 24 0 需要的结果 它应该返回: id user is_complete -------------------------- 3 24 NULL 4 24 0 5 24 0 我使用where()方法做错了什么,或者有更好的方法来实现这一点吗? 解决方法
这是数据库级别的问题,虽然它不是错误 – 这就是SQL如何使用空值.这个查询:
SELECT * FROM `table` WHERE `user` = 24 AND `is_complete` != 1 将返回is_complete不等于1但不为null的记录.如果您还希望包含空记录,则需要执行以下操作: SELECT * FROM `table` WHERE `user` = 24 AND (`is_complete` != 1 OR `is_complete` IS NULL) 通过比较具有非空值的列,您可以自动排除空值,这些空值需要使用不同的语法处理. 您需要为查询添加一个额外的括号内的子句; see here for how. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |