加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读