我正在使用 DataTables 和 CodeIgntier 在 mySql 中搜索数据,
下面是 Controller 搜索循环和模型,
Controller 搜索构建
if (isset($searchValue) && $searchValue != '')
{
$searching = array();
for ($i=0; $i<count($columns); $i++) //Loop search in all defined columns
{
$searching = $this->db->or_like($columns[$i], $searchValue);
}
}
else
{
$searching = NULL;
}
$this->model->get_myreports($this->session->userdata('user_id'), $searching);
模型函数,
public function get_myreports($user_id, $searching)
{
$this->db->where('user_id', $user_id);
$searching;
return $this->db->get('reports')->result_array();
}
这又会导致下面的 SQL 查询,
SELECT * FROM `reports` WHERE `report_id` LIKE '%sup%' ESCAPE '!' OR `report_name` LIKE '%sup%' ESCAPE '!' OR `report_submitted` LIKE '%sup%' ESCAPE '!' OR `report_total` LIKE '%sup%' ESCAPE '!' OR `report_status` LIKE '%sup%' ESCAPE '!' OR `report_received` LIKE '%sup%' ESCAPE '!' AND `user_id` = '4' ORDER BY `report_status` DESC, `report_id` LIMIT 10
现在的问题是,
它在搜索时显示所有用户报告,即使我告诉使用 user_id = 4 进行搜索,它也显示 user_id = 1 的报告,而仅进行搜索, 在页面加载时的正常数据表中,它显示了 user_id = 4 的正确报告,但问题仅出现在搜索查询中,
如何仅搜索 user_id = 4
?
谢谢,
最佳答案
应该是这样的:
public function get_myreports($user_id, $searching)
{
$this->db->->group_start()
->or_like($searching)
->group_end()
->where('user_id', $user_id);
return $this->db->get('reports')->result_array();
}
关于php - mySQL 使用数据表进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45727534/