我已为高级搜索编写了此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
似乎听起来不错,但结果不是......
答案 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注入。 要知道你在做什么。