codeigniter在find_in_set中添加IS NULL

时间:2015-10-28 11:37:46

标签: mysql codeigniter codeigniter-3

通过 codeigniter 框架生成查询

$this->db->select('id,memo,sent_to,sent_by,read_by,date')->from('memos')
    ->where("FIND_IN_SET('1',`sent_to`)")->order_by('`id`','DESC')->get();

我在查询中自动添加 IS NULL 时出错

它产生

SELECT `id`, `memo`, `sent_to`, `sent_by`, `read_by`, `date` FROM `memos` 
WHERE FIND_IN_SET('1',`sent_to`) IS NULL ORDER BY `id` DESC 

而不是

SELECT `id`, `memo`, `sent_to`, `sent_by`, `read_by`, `date` FROM `memos` 
WHERE FIND_IN_SET('1',`sent_to`) ORDER BY `id` DESC

5 个答案:

答案 0 :(得分:4)

以下代码100%工作。 试试吧,

    $this->db->select('id,memo,sent_to,sent_by,read_by,date');
    $this->db->from('memos');
    $this->db->where("FIND_IN_SET('1',`sent_to`) !=", 0);
    $this->db->order_by('`id`','DESC');
    $this->db->get();

答案 1 :(得分:2)

您需要添加!=0作为where clause以移除IS NULL

$this->db->select('id,memo,sent_to,sent_by,read_by,date')->from('memos')
    ->where("FIND_IN_SET('1',`sent_to`)!=",0)->order_by('`id`','DESC')->get();

答案 2 :(得分:1)

使用此

$query = $this->db->query("SELECT * FROM memos WHERE FIND_IN_SET('1',sent_to) ORDER BY id DESC");
$result = $query->result_array();
return $result;
  

result_array();这将返回数据作为目标数组

答案 3 :(得分:1)

您只需要为字符串变量编写一个mysql查询并使用它来运行它 $this->db->query('');而不是使用有效记录。

P / s:抱歉我的英语不好。

答案 4 :(得分:0)

find_in_set()返回数值,这就是为什么我们需要使用关系运算符来评估条件的原因 像

$this->db->where("FIND_IN_SET('x',field_list)>0");