2015-07-11 76 views
1

我的Codeigniter加入查询不起作用。在一个函数中只是试图匹配用户表中的RC代码并获取电子邮件,该函数正常工作,下一个目标是匹配文章表中的电子邮件ID并正确获取文章,但生病尝试加入用户表和文章表我需要从用户表中获取用户姓氏&姓氏,我不知道是否正确或不正确,请查看下面的代码。控制器部分:codeigniter加入电子邮件查询问题

public function user_article() 
{ 

    $rc=$_GET['rc']; 
    $data['title'] = "User Article";   
    if ($this->session->userdata ('is_logged_in')){ 
     $data['profile']=$this->model_users->profilefetch(); 
     $data['results']=$this->article_m->u_article($_GET); 
     $this->load->view('sd/header',$data); 
     $this->load->view('sd/user_article', $data); 
     $this->load->view('sd/footer', $data); 
    } 
    else { 

    } 
} 

我的模型:

function u_article($rc) 
    { 
     $query=$this->db->select('email')->where('rc',$rc['rc'])->get('users'); 

     $result=$query->result_array(); 
     if ($query->num_rows() > 0) { 
      $row = $query->row_array(); 
      $array = array ('email' => $row['email'], 'a.status' => '1'); 
      $query1=$this->db->select('a.id,title,a.status,description,image,a.email,tags,postdate,firstname,lastname,rc')->join('users u','u.email = a.email','left')->where($array)->get('articles a'); 

      if ($query1->num_rows() > 0) { 
       foreach ($query1->result() as $row) { 
        $data[] = $row; 
       } 
       return $data; 
      } 
      else {return NULL;} 
     } else {return NULL;} 

    } 

检查我的代码,并告诉我,我的错误在此先感谢。在查看

错误鞋:

A Database Error Occurred 

    Error Number: 1052 

    Column 'email' in where clause is ambiguous 

    SELECT `a`.`id`, `title`, `a`.`status`, `description`, `image`, `a`.`email`, `tags`, `postdate`, `firstname`, `lastname`, `rc` FROM (`articles` a) LEFT JOIN `users` u ON `u`.`email` = `a`.`email` WHERE `email` = '[email protected]' AND `a`.`status` = '1' 

    Filename: F:\wamp\www\project\system\database\DB_driver.php 

    Line Number: 331 

回答

2

重构你的代码。只需复制粘贴并检查其工作。

控制器:

public function user_article() 
{ 

    $rc = $this->input->get('rc'); 
    $data['title'] = "User Article";   
    if ($this->session->userdata ('is_logged_in')) 
    { 
     $data['profile']=$this->model_users->profilefetch(); 
     $data['results']=$this->article_m->u_article($rc); 
     $this->load->view('sd/header',$data); 
     $this->load->view('sd/user_article', $data); 
     $this->load->view('sd/footer', $data); 
    } 
    else 
    { 

    } 
} 

型号:

function u_article($rc) 
{ 
    $query = $this->db->select('email')->where('rc',$rc)->get('users'); 
    $result = $query->result_array(); 

    if ($query->num_rows() > 0) 
    { 
     $row = $query->row_array(); 
     $array = array ('u.email' => $row['email'], 'a.status' => '1'); 
     $query1 = $this->db->select('a.id,a.title,a.status,a.description,a.image,a.email,a.tags,a.postdate,u.firstname,u.lastname,u.rc')->join('users u','u.email = a.email','left')->where($array)->get('articles a'); 

     if ($query1->num_rows() > 0) 
     { 
      foreach ($query1->result() as $row) 
      { 
       $data[] = $row; 
      } 
      return $data; 
     } 
     else {return NULL;} 
    } else {return NULL;} 
} 
+0

您好,此代码不能正常工作,$ _ GET是正常工作,我认为这代码创建一个问题,生病添加错误信息在我的问题你可以chack ... $ array = array('email'=> $ row ['email'],'a.status'=>'1'); $ query1 = $ this-> db-> select('a.id,title,a.status,description,image,a.email,tags,postdate,firstname,lastname,rc') - > join('users u ','u.email = a.email','left') - > where($ array) - > get('articles a'); –

+0

鉴于此错误显示:在 'where子句' 1054 未知列 '0' SELECT'a'.'id','title','a'.'status:数据库出错 错误编号''''描述','图像','''''电子邮件','标签','postdate','firstname','姓','rc'从('articles' a)LEFT JOIN'users'u ON'u'.'email' ='a'.'email' WHERE'0' ='email'AND'1' ='[email protected]'AND'a'.'status' ='1' 文件名:F:\ wamp \ www \ project \ system \ database \ DB_driver.php 行号码:331 –

+0

基本上'$ _GET ['rc']'和'$ this-> input-> get('rc') '是一样的。它只是CI做事的方式。 '('email',$ row ['email'],'a.status'=>'1')'有'逗号'且应该'=>' –