2016-11-22 1 views
-1

最初に検索キーワードが来るレコードが最初に来るでしょう。適切な検索ができない、私を助けてください...webrivers - 最初に検索キーワードが来るレコードは

$terms =explode(" ", $search); 
$query = "SELECT * FROM search where "; 
$i = 0; 
foreach ($terms as $each) 
{ 
$i++; 
if ($i == 1) 
$query .= "(`title` LIKE '%".$each."%') OR (`website` LIKE '%".$each."%')"; 

else 
$query .= "OR (`title` LIKE '%".$each."%') OR (`website` LIKE '%".$each."%')"; 
} 

答えて

0

あなたはそれがLIKEオペレータよりも柔軟性およびパフォーマンスだと検索機能を実装するために、MySQLのFull Text Searchになっているはずです。

テーブル定義は次のようになります。

CREATE TABLE search (
    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    title VARCHAR(200), 
    website TEXT, 
    FULLTEXT (title,website) 
) ENGINE=InnoDB; 

次に、クエリは次のようになります。

SELECT * FROM search 
WHERE MATCH (title,website) 
AGAINST ('this is your query' IN NATURAL LANGUAGE MODE) 

SQL Injection Attacksを防ぐために、入力が適切にエスケープされていることを確認します。

+0

この記事を理解できません。 –

+0

@ThiyagarajanRはツアーテーブルのスキーマ定義に 'FULLTEXT'インデックスを作成し、' MATCH'演算子を使って一致するドキュメントを問い合わせることです。私は潜在的な実装を追加する答えを編集しました。 – cjungel

関連する問題