【发布时间】:2019-09-25 06:36:09
【问题描述】:
我收到一个数据库错误:
错误号:1052
where 子句中的列“标题”不明确
SELECT * FROM insp_people, editors_pick, video_upload WHERE title LIKE '%a%' ESCAPE '!'
这是模型:
public function getSearch($keyword) {
$this->db->select('*');
$this->db->from('insp_people, editors_pick, video_upload');
$this->db->like('title', $keyword);
$query = $this->db->get();
if($query->num_rows() > 0) {
return $query->result();
}
}
这是控制器:
$this->load->model('search_model');
$this->load->model('inspiringpeoples_model');
$this->load->model('editorspick_model');
$this->load->model('uploadvideos_model');
$data = $this->inspiringpeoples_model->getPosts();
$data = $this->editorspick_model->getPosts();
$data = $this->uploadvideos_model->getPosts();
$keyword = $this->input->post('search');
$data['results'] = $this->search_model->getSearch($keyword);
$data['title'] = "Search Results";
$this->load->view('partials/header1', $data);
$this->load->view('search_result', $data);
$this->load->view('partials/footer');
我希望从这三个表中显示搜索结果
【问题讨论】:
-
解释错误信息,mysql说,你指的是哪个
title列?是来自insp_people表吗?或editors_pick表?还是来自video_upload表?你需要告诉mysql具体的title列 -
不要使用邪恶的 SELECT *。而是命名(并限定)您实际希望返回的列
-
要详细说明草莓所说的内容,最好添加您真正想要的实际列。不仅是为了清晰起见,而且您只需选择您真正需要的数据(您真的需要所有列吗?)就可以节省一些内存,而且您消除了覆盖相同的列名,例如。如果这三列有
created_at日期,你只会得到一次,因为它们被转换成带有键的数组,你只能有一个(键是唯一的)。那么你会弄错created_at值(或误报) -
你能告诉我,你在哪个表中有名为
title的列。
标签: php mysql sql database codeigniter-3