Code Igniter mySQL查询有什么问题?

时间:2012-01-19 18:37:15

标签: mysql codeigniter

我有两个用于存储用户信息的表。一个用于认证,另一个是用户将自己输入的信息。我正在编写一个模型,当用户与此信息交互时将使用该模型。以下方法是返回数据以进行显示和修改。

我需要一个查询,它将从$ accounts_table返回'email'和'username',并从$ profiles_table返回*。我似乎无法理解JOIN语法。我理解联接是如何工作的,但我的查询会抛出sentax错误。

function get_userdata($id){
     $data = array();

     $this->db->get_where($this->profiles_table, array('user_id' => $id));
     $this->db->join($this->accounts_table.'.email', $this->accounts_table.'.id = '.$this->profiles_table.'.user_id');
     $data= $this->db->get();

     return $data;
}

3 个答案:

答案 0 :(得分:2)

我看到了几个问题:

您应该使用$ this-> db-> where(),而不是$ this-> db-> get_where()。 get_where()立即执行查询。

$this->db->get_where('user_id', $id);

$ this-> db-> join()的第一个参数应该只是表名,不包括字段。

$this->db->join($this->accounts_table, $this->accounts_table.'.id = '.$this->profiles_table.'.user_id');

你正在返回$ data,这只是一个空数组()。您需要将查询结果传递给$ data,如下所示:

$data = $record->result_array();

答案 1 :(得分:1)

get_where执行查询。因此,您的join是自己的查询,但不起作用。

您需要将get_where分为wherefrom

此外,在MySQL中,您JOIN表,而不是字段。如果您想要该字段,请将其添加到SELECT

$this->db->select($this->profiles_table.'.*');
$this->db->select($this->accounts_table.'.email,'.$this->accounts_table.'.username');
$this->db->from($this->profiles_table);
$this->db->where('user_id', $id);
$this->db->join($this->accounts_table, $this->accounts_table.'.id = '.$this->profiles_table.'.user_id');
$data = $this->db->get();

注意:$this->db->get()会返回query object,您需要使用resultrow来获取数据。

答案 2 :(得分:0)

我认为你错了:

 $this->db->join($this->accounts_table.'.email', $this->accounts_table.'.id = '.$this->profiles_table.'.user_id');

第一个参数应该是一个表而不是一个字段:$this->accounts_table.'.email'是错误的恕我直言。或者只是一个错字:)