在模型搜索中有一个get_autocomplete函数
public function get_autocomplete()
{
$x = array();
$search_data = "sah";
$this->db->select('student_id,filename,random,type,mime');
$this->db->from('uploads a');
$this->db->or_like('filename',$search_data);
$this->db->or_like('random',$search_data);
$this->db->or_like('type',$search_data);
$this->db->or_like('mime',$search_data);
$this->db->join('student-record c', 'c.student_id=a.student_id', 'left');
$this->db->like('name',$search_data);
$this->db->or_like('email',$search_data);
$this->db->or_like('phone',$search_data);
$res = $this->db->get();
}
但是我收到了错误消息
错误号码:1052
专栏' student_id'在字段列表中是不明确的
SELECT
student_id
,filename
,random
,type
,mime
FROM(uploads
a)LEFT JOINstudent-record
c上c
。student_id
=a
。student_id
WHEREfilename
LIKE'%sah%'要么random
喜欢'%sah%'或者type
喜欢'%sah%'或者mime
喜欢'%sah%' 和name
LIKE'%sah%'或者phone
喜欢 '%SAH%'文件名:C:\ wamp \ www \ ededge2 \ system \ database \ DB_driver.php
行号:330
帮我恢复这个。
答案 0 :(得分:3)
这是因为tables
(上传,学生记录)中都有student_id
个键。
当您使用JOIN
时,如果两个表具有相似的列名,请确保使用别名来访问特定列。
因此,您可以像这样更新您的查询,
public function get_autocomplete()
{
$x = array();
$search_data = "sah";
$this->db->select('a.student_id,filename,random,type,mime');
$this->db->from('uploads a');
$this->db->or_like('filename',$search_data);
$this->db->or_like('random',$search_data);
$this->db->or_like('type',$search_data);
$this->db->or_like('mime',$search_data);
$this->db->join('student-record c', 'c.student_id=a.student_id', 'left');
$this->db->like('name',$search_data);
$this->db->or_like('email',$search_data);
$this->db->or_like('phone',$search_data);
$res = $this->db->get();
}
字段列表中的'student_id'列不明确,这意味着它不知道必须从上传或学生记录<返回哪个列值/强>
<强>更新强>
$this->db->select('a.student_id,filename,random,type,mime,name,phone');
// add name and phone to get it in the result-set.
答案 1 :(得分:0)
当使用我们加入的相同字段名称两个表时发生此问题。要解决此问题,您应该在获取数据“table_name.student_id as stu_id”时使用这样的问题。您的问题将得到解决,您可以通过stu_id访问student_id。