0

ウェブを読んでトロールすることで、私が持っているMySQLデータベースでテキスト検索を行うHTMLフォームとPHPスクリプトを構築することができました。フォームの1つのフィールドに入力されたテキストから正常に検索できます。これを拡張して、ユーザーに 2 つのフィールドを提供し、1 つまたは両方にデータを入力して結果を絞り込むことができるようにする方法を考えていました。つまり、「John」という名前のすべてのエントリ、または「John」という名前のすべてのエントリを検索します。 「ダブリン」という街。私は MySQL クエリの多くの操作を試みましたが、十分に機能させることに成功していません。これを機能させるには、以下のコードをどのように記述すればよいですか?

私のHTMLフォームコードは次のとおりです。

<form method="POST" action="search.php" name="formid">
   Name: <input type="text" name="query" /><br>
   City: <input type="text" name="city" /><br>
   <input type="submit" name="submit" value="Start Search" />
</form>

&PHPコードは次のとおりです。

<?php

include 'db_details.php';

$connection = mysql_connect($server, $user, $password);

mysql_select_db($db, $connection);

$query=mysql_real_escape_string($_POST['query']);

$query = htmlspecialchars($query);

$result=mysql_query("SELECT * FROM colour WHERE (firstname LIKE '%".$query."%') ", $connection) or die ("Cannot run query");

echo "<h2>Search Results</h2>";

while ($row = mysql_fetch_assoc($result))
{
    foreach ($row as $attribute)
    echo "{$attribute} ";
    echo "<br>";
}

mysql_close();
?>
4

1 に答える 1

0

都市フィールドの値を変数に入れるだけです$city:

$city = mysql_real_escape_string($_POST['city']);

$city = htmlspecialchars($city);

次に、次のようにクエリします。

$result = mysql_query("SELECT * FROM colour WHERE (firstname LIKE '%".$query."%' OR city LIKE '%".$city."%') ", $connection) or die ("Cannot run query");

名が似ている場所または都市が似ているcolour場所からのすべての結果を照会します$query$city

注: このアプローチには優先度はありません。両方の条件に一致する色の行は、1 つしか一致しない行よりも優先度が高くなりません。

より高度な検索方法については、全文検索も検討することをお勧めします

于 2013-03-13T14:51:43.713 に答える