この質問が尋ねられてからしばらく経ちましたが、尋ねられてから開いていましたが、試して答える時間ができたのは今だけです。答えがまだ役立つことを願っています:)
わかりやすくするために、私の仮定を説明します
私のソリューションは、スペースで区切られた単語の形式で入力を受け取ります。入力された単語は結果に存在する必要がありますが、フィールド「business_nameまたはbusiness_description」からのものである必要があります。入力が指定されていない場合は、一般的なクエリを実行します。
入力データに基本的なサニタイズを追加し、コードを簡素化しました
<?php
$keywords = trim(filter_var($_REQUEST["keywords"], FILTER_SANITIZE_STRING, FILTER_SANITIZE_MAGIC_QUOTES));
$query = "SELECT * FROM business_listing";
if(strlen($keywords) > 0)
{
$words = explode(" ",$keywords);
$query .= " WHERE ";
foreach ($words as $word)
{
$safeWord = mysql_real_escape_string($word);
$query .= "(business_name LIKE '%" . $safeWord . "%' OR business_description LIKE '%" . $safeWord . "%') AND ";
}
$query = rtrim($query, " AND");
}
echo $query;
?>
PHP がファイル search.php に保存されている場合は、URL の次の引数でこれを実行できます。
search.php?keywords=gopher test fish
これにより、次の SQL ステートメントが生成されます。
SELECT * FROM business_listing WHERE (business_name LIKE '%gopher%' OR business_description LIKE '%gopher%') AND (business_name LIKE '%test%' OR business_description LIKE '%test%') AND (business_name LIKE '%fish%' OR business_description LIKE '%fish%')
Sanoj Sharma からのサンタ ナパのリクエストに対しては、
SELECT * FROM business_listing WHERE (business_name LIKE '%santa%' OR business_description LIKE '%santa%') AND (business_name LIKE '%napa%' OR business_description LIKE '%napa%')