我的网站上有搜索功能,用户可以搜索产品。它工作得很好,除了当用户搜索'ipod'时它没有结果,因为产品的名称是'apple ipod'。如何对其进行编码,以便在搜索产品名称的一部分时,出现正确的产品?
我的代码如下:
<div id="search" align="right">
<form action="" method="get">
<span id="sprytextfield1">
<input name="search" id="search2" type="text" width="250px"/>
<span class="textfieldRequiredMsg"></span></span>
<input name="" type="submit" value="Search"/>
</form></div>
<br /><br />
<h2>Your Search Results For "<?php echo $_GET['search'] ?>":</h2><hr />
<table border="0" cellpadding="2px" width="600px">
<?
$search = $_GET['search'];
$result=mysql_query("select * from products WHERE name = '$search'")
or die(mysql_error());
if (mysql_num_rows($result) == 0) {
echo ' '.'Could Not Be Found';
}
else {
while($row=mysql_fetch_array($result)){
?>
<tr>
<td><?php echo'<img src="getImage.php?id=' . $row['serial'] .'"/>'
?> </td>
<td> <b><a href="pdaproduct.php?product_id=<?=$row['serial']?>"><?=$row['name']?></a></b><br />
Price:<big style="color:green">
£<?=$row['price']?></big><br /><br />
<input type="button" value="Add to Cart" onclick="addtocart(<?=$row['serial']?>)" />
</td>
</tr>
<tr><td colspan="2"><hr size="1" /></td>
<?
}
}?>
</table>
感谢您给出的任何建议! :)
答案 0 :(得分:2)
忽略您的代码永远不会用于生产(这是不安全的)这一事实,您应该在查询中使用LIKE
。
mysql_query("select * from products WHERE name LIKE '%$search%'")
现在,针对SQL注入和其他您不想要的事情进行了优化,这将成为:
mysql_query("select * from products WHERE name LIKE '%".mysql_real_escape_string($search)."%'")
答案 1 :(得分:2)
您可以使用LIKE
语句,如此
select * from products WHERE name LIKE '%$search%'
以上将匹配'apple ipod','ipod'和'apple ipod'
答案 2 :(得分:0)