データベースを特定の単語で検索する単純な検索バーを作成しようとしています。 WHEREを使用せずにLIKE属性を使用することは可能ですか? 1つの列だけでなく、すべての列でキーワードを検索したい。現在私はこれを持っています:
mysql_query("SELECT * FROM shoutbox WHERE name LIKE '%$search%' ")
これは明らかに、検索入力で名前のみを検索します。私はこれらの両方を試しました:
mysql_query("SELECT * FROM shoutbox LIKE '%$search%' ")
mysql_query("SELECT * FROM shoutbox WHERE * LIKE '%$search%' ")
どちらも機能しませんでした。これは可能ですか、それとも別の方法がありますか?
MATCH()関数も確認したい場合があります。例:
SELECT * FROM shoutbox
WHERE MATCH(`name`, `foo`, `bar`) AGAINST ('$search')
これにブールモードを追加することもできます。
SELECT * FROM shoutbox
WHERE MATCH(`name`, `foo`, `bar`) AGAINST ('$search') IN BOOLEAN MODE
また、関連性スコアを取得し、FULLTEXTキーを追加してクエリを高速化することもできます。
近道はありません。各列を個別に指定する必要があります。
SELECT * FROM shoutbox
WHERE name LIKE '%$search%'
OR foo LIKE '%$search%'
OR bar LIKE '%$search%'
OR baz LIKE '%$search%'
ISショートカット!;)
SELECT * FROM shoutbox
WHERE CONCAT(name, foo, bar, baz) LIKE '%$search%'
これは重複した行を表示しなくなります。
SELECT * FROM shoutbox
WHERE (name LIKE '%$search%'
OR foo LIKE '%$search%'
OR bar LIKE '%$search%'
OR baz LIKE '%$search%')