代码之家  ›  专栏  ›  技术社区  ›  Javid Abbasov

sql命令执行不正确

  •  0
  • Javid Abbasov  · 技术社区  · 7 年前

    我的数据库中有两个表 instructors courses

    $this->db->join('instructors', 'instructors.id = courses.instructor_id', 'left');
    $query = $this->db->get_where('courses', array('courses_slug' => $slug));
    return $query->row_array();
    

    该代码表示:

    SELECT * FROM `courses` LEFT JOIN `instructors` ON `instructors`.`id` = `courses`.`instructor_id` WHERE `courses_slug` = 'abituriyent-hazirligi'
    

    $data['courses'] = $this->popular_courses_model->get_popular_courses($slug);
    echo $data['courses']['id'];
    die();
    

    2 回复  |  直到 7 年前
        1
  •  1
  •   user3720435    7 年前

    您正在连接两个具有相同名称(“id”)的列的表。您需要具体选择列,并在必要时重命名(“AS”)。

    select courses.id as course_id, instructor.id as instructor_id, ...
    
        2
  •  0
  •   Parker Dell    7 年前

    当使用连接时,您应该显式地调用希望返回的列,例如:

    $select = "c.id, c.name, c.instructor_id, i.name instructor_name";
    
    return $this->db->select($select)
    //equivalent to "instructors as i" 
    ->join('instructors i', 'i.id = c.instructor_id', 'left')
    ->where('c.courses_slug', $slug)
    //equivalent to "courses as c" 
    ->get('courses c')->row_array();