Select * From '%item%'?


Select * From '%item%'?

我有一个下拉菜单,我用它来选择,这导致一个值给下一页。我想使用这个值来确定从哪里进行选择。所以可能的值是汽车和玩具。所以我想让用户使用下拉菜单来选择汽车,这导致数据库从汽车中选择来查找项目。如果用户选择了玩具,我会让他们从玩具中进行选择,以便找到该道具。当我尝试使用这段代码时,我只是得到一个错误。如果我删除'%item%',错误就会消失。任何帮助都会受到欢迎。谢谢。

提交

<form action="search.php" method="post">
<select>
<option value>Choose A Item</option>
<option value="car" name="item">Car</option>
<option value="toys" name="item">Toys</option>
</select>
<input type="submit" name="submit" value="Submit" />
</form>

搜索
$term = $_POST['term'];
$item = $_POST['item'];
$query = mysql_query("select * from '%$item%' where Items like '%$term%'");
if(mysql_num_rows($query) <= 0)
{
echo "<center>No results. Please try another item.</center>";
} else {
while ($row = mysql_fetch_array($query)) {
echo "<p2>";
echo $row['Items'], ' - Location ' .$row['Loc'];
echo '<br/><br/>';
echo "</p2>";
}
}
?>

1.) -不要使用mysql_query -它是一个过时的库,上面所写的查询受制于SQL注入-这是互联网上最常见的妥协。

2.)不要用like '%…%',因为它不能被索引,并且在任何中等或更大大小的表上都会非常慢。尝试至少删除第一个%以允许索引。

http://php.net/manual/en/book.pdo.php

我认为您的查询应该改为:$query = mysql_query("select * from '$item' where Items like '%$term%'");