【问题标题】:codeigniter join query issue in email电子邮件中的codeigniter连接查询问题
【发布时间】:2015-07-11 09:35:23
【问题描述】:

我的 Codeigniter 连接查询不起作用。在一个函数中只是尝试匹配用户表中的 RC 代码并获取电子邮件,此功能正常工作,下一个目标是匹配文章表中的电子邮件 ID 并获取文章正常工作,但尝试加入用户表和文章表,因为我需要从用户表中获取用户的名字和姓氏,我不知道这是否正确,请查看下面的代码。控制器部分:

  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` = 'admin@gmail.com' AND `a`.`status` = '1'

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

  Line Number: 331

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    重构了您的代码。只需复制粘贴并检查其工作情况。

    控制器:

    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;}
    }
    

    【讨论】:

    • 您好,此代码无效,$_GET 正常工作,我认为此代码会产生问题,请在我的问题中添加错误消息,您可以破解 ... $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');
    • 此错误显示在视图中:发生数据库错误错误号:1054 'where 子句'中的未知列'0' SELECT a.id,title,a.@ 987654327@, description, image, a.email, tags, postdate, firstname, lastname, rc FROM (articles a) LEFT JOIN users u ON u.email = a.email 其中0 = 'email' AND 1 = 'admin@gmail.com' AND a.status = '1' 文件名: F:\wamp\www\project\system\database\DB_driver.php 行号:331
    • 基本上$_GET['rc'] 和$this->input->get('rc') 是一样的。它只是 CI 的做事方式。 ('email', $row['email'], 'a.status' => '1') 有一个comma 应该是=>
    • 错误更改:where 子句中的“电子邮件”列不明确
    • 您必须为所有列添加别名。喜欢u.email、a.title
    猜你喜欢
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 2016-08-12
    • 2011-03-03
    • 1970-01-01
    • 2014-03-08
    • 2015-08-24
    • 1970-01-01
    相关资源
    最近更新 更多