私が取り組んでいるプロジェクトでは、複数の単語を検索する必要があります...例として「Sprint Apple iPhone」を検索します。これらの単語のいずれかがデータベースの列と一致する場合、行全体の内容を表示する必要があります。
これで SQL インジェクションから保護されたと思いますが、間違っている可能性があります。私が今解決しようとしている主な問題は、一度に 1 つの単語しか検索できないことです。たとえば、「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>