我在编码点火器中的活动记录有问题。
这是我的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);