2017-01-25 18 views
1

今のところ、入力欄に各列を検索する検索バーがあります。ハウス|あなたはまた、マイリーを取得ハウスを検索する場合ハウス、同じ|あなたはマイリーを検索したとき2つ以上のキーワードで複数の列を検索する方法

+--------+------------+ 
| name | location | 
+--------+------------+ 
| Miley | House  | 
+--------+------------+ 
| Bob | Hotel  | 
+--------+------------+ 

はあなたが出力マイリーとテーブルの行を取得します。しかし、検索バーに "Miley House"と入力すれば、それは出力されません。

コード:複数のキーワードで検索する方法:)私を助けることができれば

<input type="text" id="search" name="search" value="" > 

SQL

WHERE CONCAT(id, name, department, object, description, location, room, reg_date, until_date, reason, email) LIKE '%".$search."%' 

がいいだろう。

+0

MySQLの全文検索機能を使用してください。 –

答えて

0

WHERE CONCAT_WS(' ', id, name, department, object, description, location, room, reg_date, until_date, reason, email) LIKE '%".$search."%' 

にあなたの状態を変更し、スペースがそれとの間に存在するため、取得文句を言わないあなたの「マイリー・ハウス」で

をチェック

。そして、クエリはあなたのコンカットコンディションで完全に一致するものを探しますが、これは決して満たされません。

したがって、すべてのフィールド値の前にconcat_ws( ""、id、name、department、object、description、location、room、reg_date、until_date、reason、email)はスペースを追加します。正確な一致条件が要件を満たします。

0

uは、より良いMySQLデータベース内のデータを検索するための結果にしたいならば、uはuが構造を変更する必要がいるフルテキスト検索の概念を使用することができますねえ、この

SELECT CONCAT(`id`, `name`, `department`, `object`, `description`, `location`, `room`, `reg_date`, `until_date`, `reason`, `email`) as all_str FROM `tbl_name` 
WHERE `all_str` LIKE '%".$search."%' 
0
SELECT CONCAT(`id`, `name`, `department`, `object`, `description`, `location`, `room`, `reg_date`, `until_date`, `reason`, `email`) as data FROM `tablename` 
WHERE name LIKE '%fieldname%' OR location LIKE '%fieldname%' 
-1

のように試してみてくださいフルテキストインデックスの概念に基づいてテーブルbeczフルテキスト検索を実行します。

****デモ****

TABLEの記事( のid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEYをCREATE、 タイトルVARCHAR(200)、 ボディTEXT、 FULLTEXT(タイトル、本文)//フルテキストインデックス );

記事(タイトル、本文)INTO INSERTが VALUES( 'MySQLのチュートリアルを'、 'DBMSはデータベースの略...')、 ( 'MySQLの井戸を使用する方法'、 'あなたは通り抜けた後... ')、 (' 1001 MySQL Tricks '、' 1。rootとしてmysqldを実行しない2. ... ')、 ('このチュートリアルでは...を表示します。 'MySQLとYourSQL'、 '次のデータベース比較で...')、 ( 'MySQLセキュリティ'、 '正しく設定されていると、MySQL ...');

ここで、最高の結果を得たい場合は、クエリの下で発射してください。 SELECTタイトル、本文、MATCH(タイトル、本文)AGAINST( 'DBMSは自然言語モードではデータベースを表します)all_data FROM articles order by all_data desc limit 1;

私はそれが役に立つと思う..........

+0

これはどのようにして質問に答えますか? –

+0

さて、私のプロセスが有効でない場所を教えてもらえますか?質問にはデータベースに2つのフィールドがあり、与えられたデータに基づいて最良の結果を探したいと思っています。 @オレクサンドル・カレニク –

関連する問題