私はここで新しいです。私はPHPでコーディングを始め、MySQLを使い始めました。
複数の「キーワード」を検索したいとします。たとえば、「Intel i7 7700k」のようなテーブルでは、これをどのように達成するかわかりません。私のMySQLの表の検索機能を改善するにはどうすればよいですか? PHP + MySQL
私の構造は次のようになります。
id | brand | family | model | cores | threads
など
1 | Intel | i7 | 7700k | 4 | 8
など
次のPHP検索は動作しますが、1つの単語だけのために。
if(isset($_GET['search'])){
$search = $conn->escape_string($_GET['search']);
$query = $conn->query("
SELECT brand, family, model
FROM cpus
WHERE brand LIKE '%{$search}%'
OR family LIKE '%{$search}%'
OR model LIKE '%{$search}%'
");
私は単語の配列をループしようとしましたが、動作しません。
if(isset($_GET['search'])){
$search = $conn->escape_string($_GET['search']);
$words = explode(' ',$search);
$searchout = foreach ($words as $word){
"SELECT brand, family, model FROM cpus WHERE brand LIKE '%$word%' OR family LIKE '%$word%' OR model LIKE '%$word%'"
}
$query = $conn->query($search_out);
echo "<div class='result-count'>Found " . $query->num_rows . " results.</div>";
if($query->num_rows){
while($r = $query->fetch_object()){
echo "<div class='result'><a href='#'>" . $r->brand . $r->model . "</a></div>";
}
}
}
検索を複数の単語に対応させるにはどうすればよいですか?私はゆっくりと4日、PHPとMySQLを嫌う、それはこれだけで悲しいです働いて得ることができません開始
if(isset($_GET['search'])){
$search = $conn->escape_string($_GET['search']);
$words = explode(' ',$search);
$words_count = count($words);
$cpus_columns = ['brand','family','model'];
print_r($cpus_columns);
$mysql_where = "SELECT brand, family, model FROM cpus WHERE ".$cpus_columns[0]." LIKE ".$words[0];
$mysql_loop = for ($i = 1; $i <= $words_count; $i++){
" OR ".$cpus_columns[$i]." LIKE ".$words[$i]
}
$mysql_query = $mysql_where . $mysql_loop;
$query = $conn->query($mysql_query);
echo "<div class='result-count'>Found " . $query->num_rows . " results.</div>";
if($query->num_rows){
while($r = $query->fetch_object()){
echo "<div class='result'><a href='#'>" . $r->brand . $r->model . "</a></div>";
}
}
}
:ここ"Intel i7 7700k" "7700k intel i7" "i7 7700k intel"
同様 など
も失敗した私のもう一つの試みです。あなたのPHPコードでプリペアドステートメントを使用して、に見てください
を追加することができます。この後、あなたのMySQLクエリの全文検索を調べてみましょう。私はそれがここで役立つと思います。 –
あなたのコードは間違っています(おそらく単に誤植です)。 $ query = $ conn-> query($ search_out);の直後に '$ searchout = foreach ...'があり、 '_ '記号が付きます。あなたは 'foreach($ words as $ word)'ループの中にすべてを入れてみましたか? –
私はクエリを何回か呼び出していたようですが、どうすれば "foreach loop"の "finished result"を取得してクエリに追加できますか? – G1K777