$this->db->select('customer.*, feedback.*,feedback.id as fid');
$this->db->join('customer', 'customer.feedbackID = feedback.id', 'left outer');
$this->db->where('feedback.retail_id', $this->session->userdata('store_id'));
$this->db->where('feedback.fb_date BETWEEN "' . date('Y-m-d', strtotime($this->input->post('fromdate'))) . '" AND "' . date('Y-m-d', strtotime($this->input->post('todate'))) . '"');
$extra_where = explode(' ', $post_parameter);
foreach ($extra_where as $value) {`
        `$this->db->or_like('feedback.comments', $value);`
}
$this->db->like('feedback.comments', $this->session->userdata('search_text'));
$data['data'] = $this->db->get('feedback')->result();


我的问题是,我正在使用ORAND,就像运算符一样,则数据无法正确获取。

MySQL查询:

SELECT `customer`.*, `feedback`.*, `feedback`.`id` as fid
FROM (`feedback`)
LEFT OUTER JOIN `customer` ON `customer`.`feedbackID` = `feedback`.`id`
WHERE `feedback`.`retail_id` =  '1'
AND `feedback`.`fb_date` BETWEEN "2015-08-01" and "2015-08-31"
AND  `feedback`.`comments`  LIKE '%Stock%'
OR  `feedback`.`comments`  LIKE '%not%'
OR  `feedback`.`comments`  LIKE '%Found%'


示例:获取8月的数据,然后数据应该匹配,Stock仅找到8月的数据,而没有找到关键字,但是由于该行中存在“ not”关键字,因此也显示了6月的数据。

我不得不在什么时候使用ORAND感到困惑。

最佳答案

尝试这个

$query = $this->db->query(
    "SELECT customer.*,feedback.*,feedback.idas fid
    FROM feedback AS feedback
    LEFT OUTER JOIN customerONcustomer.feedbackID=feedback.id
    WHERE feedback.retail_id=  '1'
    AND feedback.fb_date BETWEEN '2015-08-01' AND '2015-08-31'
    AND feedback.commentsLIKE '%Stock%'
    OR feedback.commentsLIKE '%not%'
    OR feedback.commentsLIKE '%Found%'");
$result = $query->result_array();
return $result;

关于mysql - 使用Codeigniter与Like运算符进行“AND”,“OR”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34430141/

10-16 23:39