在我的CodeIgniter sql连接查询中出错

时间:2012-09-25 16:04:39

标签: php sql codeigniter

所以我一直在寻找错误,但仍然无法找到它。

这是代码 -

        $this->db->select('*');
        $this->db->from('friendRequests');
        $this->db->where(array('friendRequests.status' => 1, 'users.status' => 1)); 
        $this->db->or_where(array('friendRequests.senderId' => $this->session->userdata('userId'), 'friendRequests.receiverId' => $this->session->userdata('userId'))); 
        $this->db->join('users', 'users.id = '.$this->session->userdata('userId'));             
        $query = $this->db->get();

它为我提供了这个错误 -

Unknown column '1' in 'on clause'

SELECT *
  FROM (`friendRequests`) 
  JOIN `users` ON `users`.`id` = `1`
 WHERE `friendRequests`.`status` = 1
   AND `users`.`status` = 1 
    OR `friendRequests`.`senderId` = '1' 
    OR `friendRequests`.`receiverId` = '1'

2 个答案:

答案 0 :(得分:2)

如果一个条目被反引号包围,即使它不是没有反对的列,它也会被视为一列。由于此原因,它认为1JOIN行上的一列。

显然,这是CI中join方法的产物。通过将该条件移动到WHERE子句,您可以非常轻松地修复它。它不需要在JOIN子句中。

答案 1 :(得分:0)

JOIN不起作用;语法是:

JOIN 'tablename' ON 'tablename.field' = 'othertable.field'

如果我不得不假设您正在尝试获取用户的朋友请求:

JOIN 'users' ON 'users'.'id' = 'friendRequests'.'receiverId'