首页 文章

Codeigniter - 活动记录其中加入列不明确

提问于
浏览
0

我在codeigniter中有活动记录的问题 .

这是我的sql

$this->db->select('*');
    $this->db->from('news as n');
    $this->db->join('user as u', 'n.id_user = u.id_user');
    $this->db->where('like >','10');
    $this->db->limit(10);
    $this->db->offset($offset);
    $query = $this->db->get(); 
    return $query->result_array();

news ”表包含“ like ”列和表“ user " also containing column " like

输出如下:

where子句中的'like'列是不明确的

SELECT * FROM (`news` as n) 
    JOIN `user` as u ON `n`.`id_user` = `u`.`id` 
    WHERE `like` > '10' LIMIT 5

然后我更换

$this->db->where('like >','10');

$this->db->where('n.like >','10');

因为我想在新闻台中...但它没有用

有解决方案吗

4 回答

  • 1

    你需要使用新闻表的别名 n 所以 n.like

    $this->db->select('*');
    $this->db->from('news as n');
    $this->db->join('user as u', 'n.id_user = u.id_user');
    $this->db->where('n.like >','10');
    $this->db->limit(10);
    $this->db->offset($offset);
    $query = $this->db->get(); 
    return $query->result_array();
    

    这仍然不起作用,因为 like 是mysql的保留关键字 . 您需要将列名更改为其他名称 . 阅读更多关于mysql保留关键字的信息here

  • 0

    尝试这样的事情

    $this->db->select('*');
        $this->db->from('news as n');
        $this->db->join('user as u', 'n.id_user = u.id_user');
        $this->db->where('n.`like` >','10');
        $this->db->limit(10);
        $this->db->offset($offset);
        $query = $this->db->get();
    

    注意:将列名更改为保留关键字以外的名称

  • 3

    如果你有“喜欢”作为列名,请将列放在撇号(`)中

    $this->db->where('`like` >','10');
    

    但是,使用任何mysql保留关键字作为标识符并不是一个好习惯 . 将列名更改为else,如果多个表使用like列,则使用表别名 .

    $this->db->where('n.`like` >','10');
    
  • 1

    如果你可以避免使用保留关键字会更好,所以例如将列名改为喜欢 .

    $this->db->where('n.likes >', 10);
    

相关问题