我需要使用PHP和MYSQL代码搜索我的数据库,我现在所做的是
$mysearch = $_GET['search'];//the search query , for ex - best potato
$recepiesuisine_quer = mysql_query("SELECT * FROM addrecepie WHERE MATCH (name,method,contributedby,ingredients,healthytip,cuisine) AGAINST ('".$mysearch."' IN BOOLEAN MODE) ");
// Here the MATCH contain all the columns of my table
while($row = mysql_fetch_assoc($recepiesuisine_quer)) {
echo"
<a href='recepie_detail.php?id=".$row['id']."&cuisine=".$row['cuisine']."' id='foodie1_title' class='span-7'>
<div class='span-1'><img src='".$row['image']."' width='80'></div>
<div class='span-5'>
".$row['name']." ,<br /> ".$row['contributedby'].",<br /> ".$row['cuisine']." <br />
</div>
</a>
";
}我的搜索对单个字符很好,但好像我想要搜索两个字符,例如:-最佳马铃薯-它将给我的结果
H 110所有E 111最佳马铃薯<代码>E 212表行中的任何位置。H 213G 214
我希望我的第三个条件,首先显示,然后,它可能会显示第1和第2结果。我需要先展示最相关的项目。使用上面的查询,我无法做到这一点。请帮助我使用什么样的查询。
发布于 2012-06-05 19:09:47
你可以用这个查询-
SELECT *
FROM addrecepie
WHERE MATCH (name,method,contributedby,ingredients,healthytip,cuisine)
AGAINST ('".$mysearch."' IN BOOLEAN MODE)
OR MATCH (name,method,contributedby,ingredients,healthytip,cuisine)
AGAINST (SUBSTRING_INDEX('".$mysearch."', ' ', 1) IN BOOLEAN MODE)
OR MATCH (name,method,contributedby,ingredients,healthytip,cuisine)
AGAINST (SUBSTRING_INDEX('".$mysearch."', ' ', -1) IN BOOLEAN MODE) SUBSTRING_INDEX()函数会用空格分隔单词。这是两个字,有一个空格。您可能还必须使用TRIM()函数。
发布于 2012-06-07 05:17:35
始终绑定变量,否则mysql查询将失败,以防它们在搜索参数值中是单引号。
https://stackoverflow.com/questions/10903292
复制相似问题