我正在进行的项目需要多词搜索......就像搜索“Sprint Apple iPhone”的示例一样。如果这些单词中的任何一个与我的数据库中的一列匹配,则必须显示整行的内容。
我相信我现在已经从 SQL 注入中得到了保护,但可能是错误的。我现在要解决的主要问题是我一次只能搜索一个词,例如“Sprint”或“Apple”或“iPhone”,但如果我输入整个查询,则不会显示任何结果。
部分查询确实有效,例如“Sprin”或“Ap”或“iPho”……不知道我哪里出错了。我查看了 StackOverflow 上的几个示例,这些示例适用于单个单词查询,但找不到多个单词的解决方案。
任何帮助表示赞赏!
<font size="+3" face="Verdana">xxxx</font>
<br><br>
<form name="form" action="xxxx.php" method="get">
<input type="text" name="q" size="60" />
<input type="submit" name="Submit" value="Search">
</form>
<table>
<?
$var = $_GET['q'];
try {
$conn = new PDO('mysql:host=localhost;dbname=xxxx', $username, $password);
$stmt = $conn->prepare("SELECT * FROM phones WHERE carrier LIKE :search OR
manufacturer LIKE :search OR model LIKE :search");
$stmt->execute(array('search' => "%$var%"));
$result = $stmt->fetchAll();
if ( count($result) ) {
foreach($result as $row) {
echo "<tr>";
echo "<td>" .$row['carrier']. "</td>";
echo "<td>" .$row['manufacturer']. "</td>";
echo "<td>" .$row['model']. "</td>";
echo "</tr>";
}
}
else {
echo "No results found.";
}
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
?>
</table>