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

时间:2013-12-01 09:10:06

标签: php 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

似乎听起来不错,但结果不是......

1 个答案:

答案 0 :(得分:1)

然后尝试此查询,

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注入。 要知道你在做什么。