0

MySQL バージョン 5.1.57 を実行しています

ユーザーが検索文字列を挿入できる HTML フォームがあります。$_SESSIONこの文字列にを作成し、MySQLクエリで実行します。このようなもの:

<?php

  $sql = mysql_query ("SELECT 
                        s.student_firstname, s.student_lastname 
                      FROM students s 
                      WHERE (
                             s.student_firstname LIKE '%$searchstring%' OR
                             s.student_lastname LIKE '%$searchstring%
                             )
                      AND s.isActive = '1' "); 
?>

問題は、ユーザーが複数の単語を検索している場合です。次に、いずれかの列の値に対して文字列を照合しようとしているため、クエリが失敗します。

MySQL FULLTEXT インデックス作成について読んだことがありますが、私が理解している限り、それはMyISAMテーブル (?) でのみ機能します。自分の環境で複数の単語を検索するにはどうすればよいですか?

4

1 に答える 1

0

検索文字列をスペース (" ") で分割し、各セグメントをクエリまたは別のクエリに挿入する必要があると思います。例えば ​​:

$str = "単語1 単語2";

これで、最初に文字列全体 "word1 word2" を検索し、その後データベースで "word1" と "word2" を検索します。このソリューションでは、「a、an、the、or、...」などの単語はシークすべきではないため、単語無視リストを処理する必要があります...

innoDB テーブルを使用する他の方法があるかどうかはわかりません...最善の解決策は明らかに「match against」コマンドを使用することですが、これは MyISAM の下の全文インデックスでのみ使用できます。

于 2012-07-18T12:37:09.900 に答える