代码点火器 - 活动记录 其中 加入 列不明确



我在编码点火器中的活动记录有问题。

这是我的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();

包含"喜欢"列的"新闻"表和包含"喜欢"列的表"用户"

输出如下:

其中子句不明确的列"喜欢"

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');

因为我想像在新闻表中一样...但它没有用

有什么解决办法吗?

您需要使用新闻表的别名,该别名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 保留关键字的更多信息

尝试这样的事情

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

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

如果你有"like"作为列名,把列放在撇号(')中,就像

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

但是,使用任何 mysql 保留关键字作为标识符不是一个好的做法。将列名更改为else,如果您使用类似列的多个表,则使用表别名like。

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

如果您可以避免保留关键字会更好,因此例如将 like 列名更改为喜欢。

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

相关内容

  • 没有找到相关文章

最新更新