通过codeigniter中的电子邮件ID获取数据库

时间:2015-06-20 12:01:29

标签: php mysql codeigniter

控制器[在文章页面文章正确地使用分页,在'文章'数据库中存储用户电子邮件ID,现在我试图从用户表中获取用户名和姓,但不能正常工作]

  public function articles()
   {    
    $data['title'] = "Articles";

    $config = array();
    $config["base_url"] = base_url() . "sd/articles/";
    $config["total_rows"] = $this->model_users->record_count_articles();
    $config["per_page"] = 10;
    $config["uri_segment"] = 3;


    $this->pagination->initialize($config);

    $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
    $data["results"] = $this->model_users->fetch_result_articles($config["per_page"], $page);
    $data["links"] = $this->pagination->create_links();


    if ($this->session->userdata ('is_logged_in')){
        $data['profile']=$this->model_users->profilefetch();
        $this->load->view('sd/header',$data);
        $this->load->view('sd/articles', $data);
        $this->load->view('sd/footer', $data);
    } else {
        $this->load->view('sd/sdheader', $data);
        $this->load->view('sd/articles', $data);
        $this->load->view('sd/sdfooter', $data);
    }
}   

模型[在文章页面中获取用户名]

     public function record_count_articles() {
           return $this->db->where('status','1')->count_all("articles");
       }

    public function fetch_result_articles($limit, $start) {
        $this->db->limit($limit, $start);
        $query = $this->db->where('status','1')->order_by('id', 'DESC')->get("articles");

        if ($query->num_rows() > 0) {
            foreach ($query->result() as $row) {
                $data[] = $row;

            }
            return $data;
        }
        return false;
    }

添加这些行[但不起作用]

  if ($query->num_rows() > 0) {
            foreach ($query->result() as $row) {
                $data[] = $row;
                $query = $this->db->select('firstname')->select('lastname')->where('email',$data[0]->email)->get("users");
                $data['name_info']=$query->result_array();
            }
            return $data;
        }
        return false;

1 个答案:

答案 0 :(得分:0)

这里有2个问题。请查看代码中的评论。

 if ($query->num_rows() > 0) {
            foreach ($query->result() as $row) {
                //1) $data[0]->email keep repeating same email.
                //   inner $query variable should be different.  
                $innerQuery = $this->db->select('firstname,lastname')->where('email',$row->email)->get("users");
                //2) you need to store query result on array.
                // $data['name_info'] stores only single record.
                $data[]=$innerQuery ->result_array();
            }
            return $data;
        }
        return false;

如果您可以通过加入

来实现,则应避免循环查询

编辑:让我们尝试加入

public function fetch_result_articles($limit, $start) {
        $this->db->limit($limit, $start);
        $query = $this->db
      ->join('users u','u.email = a.email','left')
      ->where('a.status','1')->order_by('a.id', 'DESC')->get("articles a");

        if ($query->num_rows() > 0) {
            foreach ($query->result() as $row) {
                $data[] = $row;

            }
            return $data;
        }
        return false;
    }

我没有测试过代码。但它比循环更好。