2013-12-20 40 views
0

我有以下的搜索引擎:使搜索查詢更強大

HTML代碼:

<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兩列的組合。我怎樣才能做到這一點?

+1

老兄... sql注入。看看它。 –

+0

另外XSS'」....>'如果用戶搜索'「>' – Jompper

+0

謝謝,但是我使用 $ SEARCHQ = mysql_real_escape_string($ SEARCHQ); 難道這還不夠,以防止SQL注入 – user3052155

回答

0

當你的表開始變得越來越大,與LIKE查詢和搜索字符串之前%小丑,MySQL將無法使用索引並執行全表掃描。查詢可能變得非常緩慢。如果您使用的是MyISAM表,最好的選擇是create a Full-Text index包含可搜索的列。

然後,您有三種類型的full-text search模式。性能應該很好,因爲不能再使用小丑了。

編輯:剛剛閱讀,該全文搜索應該可用於InnoDB太自MySQL 5.6以上

+0

您好,感謝您的信息! 我要閱讀全文搜索! – user3052155