我想在MySQL表中找到特定的关键字....
主要代码是:
if ($_REQUEST["keyword"]<>'') {
$search_string = "AND trainer like '".mysql_real_escape_string($_REQUEST["keyword"])."%'
OR venue like '".mysql_real_escape_string($_REQUEST["keyword"])."%'
OR session like '".mysql_real_escape_string($_REQUEST["keyword"])."%'
OR course like '".mysql_real_escape_string($_REQUEST["keyword"])."%'
OR category like '".mysql_real_escape_string($_REQUEST["keyword"])."%'";
}
else {
$sql = "SELECT * FROM ".$SETTINGS["data_table"]."
WHERE id>0".$search_string;
}
问题是上面的代码显示搜索到的所有单词的结果相同。任何参考帮助都将非常感谢。
答案 0 :(得分:0)
假设您的问题是您的结果不正确,可以使用以下方法解决此问题:
$search_string = " AND (trainer like '%".mysql_real_escape_string($_REQUEST["keyword"])."%'
OR venue like '%".mysql_real_escape_string($_REQUEST["keyword"])."%'
OR session like '%".mysql_real_escape_string($_REQUEST["keyword"])."%'
OR course like '%".mysql_real_escape_string($_REQUEST["keyword"])."%'
OR category like '%".mysql_real_escape_string($_REQUEST["keyword"])."%')";
所做的更改:
OR
语句AND
之前添加了空格,因此您生成的查询最终不会包含id>0AND
修改强>
我认为通过解释出现问题我可以提供更多帮助。假设有人搜索“foo”。并且您的表格被称为&#39; bar&#39;,您的代码将生成以下查询:
SELECT
*
FROM
bar
WHERE
id>0AND
trainer like 'foo%'
OR venue like 'foo%'
OR session like 'foo%'
OR course like 'foo%'
OR category like 'foo%'
这里有几个问题:
AND
会在{id> 0&#39;旁边出现,AND
之前的空格会解决该问题。OR
个句子包裹起来,因此您最终会得到一个查询,要求满足任何条件(包括id > 0
本身)上述建议的更改将解决这些问题。
答案 1 :(得分:0)
对于完整的特定单词,您需要的意思是您必须在单词
之前和之后使用双 %% if ($_REQUEST["keyword"]<>'') {
$search_string = "AND trainer like '%".mysql_real_escape_string($_REQUEST["keyword"])."%'
OR venue like '%".mysql_real_escape_string($_REQUEST["keyword"])."%'
OR session like '%".mysql_real_escape_string($_REQUEST["keyword"])."%'
OR course like '%".mysql_real_escape_string($_REQUEST["keyword"])."%'
OR category like '%".mysql_real_escape_string($_REQUEST["keyword"])."%'";
}
else {
$sql = "SELECT * FROM ".$SETTINGS["data_table"]."
WHERE id>0".$search_string;
}