1

我需要使用 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>
             ";
             }

我的搜索对单个字符运行良好,但好像我想搜索 2 个字符,例如:- 最佳土豆它会给我的结果

  1. 表行中的所有Potato

  2. 表行中的所有最佳位置。

  3. 表行中的所有最佳土豆。

我希望我的第 3 个条件首先显示,然后在它可能显示第一个和第二个结果之后。我需要先显示最相关的项目。通过上述查询,我​​无法这样做。请帮助我应该使用什么查询。

4

2 回答 2

0

始终绑定您的变量,否则如果它们是搜索参数值中的单引号,mysql 查询将失败。

于 2012-06-07T05:17:35.187 回答
0

您可以使用此查询 -

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()函数将用空格分隔单词。这是 2 个单词和 1 个空格。您可能还必须使用该TRIM()功能。

于 2012-06-05T19:09:47.200 回答