我有以下搜索引擎:
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 = Audi
和merk = A6
。当我搜索“奥迪”或“A6”的结果时,我得到了结果,但是当我搜索奥迪A6时,我没有得到任何结果。
所以我想要来自同一$Row
的两列的组合。我怎么能这样做?
答案 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也应该可以使用全文搜索