使搜索查询更强大

时间:2013-12-20 21:31:49

标签: php mysql search

我有以下搜索引擎:

HTML code:

<form id="header-search" action="car-list.php" method="get">
            <input type="text" name="search" value="<?php echo $_GET['search'];  ?>"  id="text" placeholder="Zoek hier.." class="quick-search" onchange  >

            <select name="type-option">
                <option value="auto" selected="selected">Auto's</option>
        <!--    <option value="bikes">Motoren</option>
                <option value="trucks">Trucks</option>
                <option value="Parts">Parts</option> -->
            </select>
            <div class="search-submit">
                <input type="submit" name="submit" id="search" value="Zoeken"/>
                 <input type="hidden" name="page" id="text"  value="1" class="quick-search"  >
                 <input type="hidden" name="ipp" id="text" value="25"  class="quick-search"  >
            </div>
        </form>

Php代码:

<?php
$searchq = $_GET['search']; 
$searchq = htmlspecialchars($searchq); 
 $searchq = mysql_real_escape_string($searchq);                  
 $photo=mysql_query("SELECT * FROM `adver` WHERE merk LIKE '%$searchq%' OR titel 
 LIKE '%$searchq%' OR model LIKE '%$searchq%' ORDER BY car_id DESC $pages->limit")or die(mysql_error());

 while($get_photo=mysql_fetch_array($photo)){ 

?>

 <a href="<?php echo 'car-details.php?merk='.$get_photo['merk'] .'&car_id='  .$get_photo['car_id'] .'&titel=' .$get_photo['titel'] ;?>">
 <img src="<?php  echo $get_photo['path'] ; ?>"   style="border:1px solid #021a40;" alt="<?php  echo $get_photo['merk'] ;?>" }/>

我有一张桌子。有3列model, merk, titel

我们说model = Audimerk = A6。当我搜索“奥迪”或“A6”的结果时,我得到了结果,但是当我搜索奥迪A6时,我没有得到任何结果。

所以我想要来自同一$Row的两列的组合。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

您需要连接要搜索的字段:

$photo=mysql_query("SELECT * FROM `adver` WHERE CONCAT_WS(' ',model,merk) LIKE '%$searchq%' ORDER BY car_id DESC $pages->limit")or die(mysql_error());

doc:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws

答案 1 :(得分:0)

当你的表开始变大时,使用LIKE查询和搜索字符串之前的%joker,MySQL将无法使用索引并进行全表扫描。查询可能变得非常缓慢。如果您使用的是MyISAM表,最好的选择是create a Full-Text index包含可搜索的列。

然后您有三种full-text search模式。由于无法再使用小丑,因此表现应该很好。

编辑:请注意,自MySQL 5.6以来,InnoDB也应该可以使用全文搜索