高级搜索代码不会带来相关结果(Codeigniter)


Advanced search code does not bring relevant results (Codeigniter)

我为高级搜索编写了CodeIgniter代码。这个高级搜索只有一个列表,供用户选择。但是,我有一个问题,当搜索时,它会带来用户未选择的其他城市的结果。以下是术语的匹配代码:

$db->or_like("title", $_POST['search-term']); // OR 
$db->or_like("content", $_POST['search-term']);   // OR 
$db->or_like("name", $_POST['search-term']);    // OR   
$db->or_like("keywords", $_POST['search-term']);    // OR

这里是负责与所选省份匹配的部分代码:

if(isset($_POST['province']) && $_POST['province'] != "0")
        { 
            $db->where("province", $_POST['province']); 
            if(isset($_POST['cities']) && $_POST['cities'] != "0")
            {
            $db->where("city", $_POST['cities']);   
            }
        } // AND    

下面是负责将数据放入数组的代码:

$search_result = $db->get("ads")->result_array();

还值得一提的是,当我将or_like更改为like时,它不会产生任何结果。

这是生成的QUERY:

SELECT * FROM (`ads`) WHERE `status` = 2 AND `province` = '5' AND `title` LIKE '%شریف%' OR `content` LIKE '%شریف%' OR `name` LIKE '%شریف%' OR `keywords` LIKE '%شریف%' ORDER BY `stars` DESC

它看起来很好,但结果不是。。。

然后尝试此查询,

SELECT * FROM (`ads`) WHERE `status` = 2 AND `province` = '5' AND(
 `title` LIKE '%شریف%'
 OR `content` LIKE '%شریف%' OR `name` LIKE '%شریف%' OR `keywords` LIKE '%شریف%') 
ORDER BY `stars` DESC

更新:在CI中,您可以这样尝试:

$sql = "SELECT * FROM (`ads`) WHERE `status` = 2 AND `province` = '5' AND(
     `title` LIKE '%شریف%'
     OR `content` LIKE '%شریف%' OR `name` LIKE '%شریف%' OR `keywords` LIKE '%شریف%') 
    ORDER BY `stars` DESC";
$this->db->query($sql);

这会解决你的问题。

旁注:您的代码表示欢迎使用SQL注入。注意你在做什么。