2011-04-21 39 views
1

テキストボックスに入力された文字に基づいてPHP検索をしようとしています。私はそれがパターンと一致し、データベースから関連する結果を見つけることを望みます。PHPパターン一致検索システム

私は

"Jo Smi" 

で入力したのであればそれは

J o Smith, Pojo Smithson, Ojo Smith

どのようにこれを達成するであろう結果を見つけるだろう。私はデータベースから情報を取得する方法を知っていますが、さまざまな分野の一部ではありません。

目的は、フィールドuser_firstnameでの検索ユーザーを検索することですuser_lastnameuser_email

任意のアイデア?

+5

そして質問は何であると仕上げを開始しますか? – hsz

+0

これらはすべて正解です:「ワイルドカード」のようなものですが、SQLステートメントに潜伏しているテキストを落とすだけでセキュリティ上のリスクが生じる可能性があります(ウォッチャーは '$ escapedTextString'を使ってこのことを示唆しています。 – horatio

答えて

1

クエリから直接行うことができます。

は、テキストボックスの結果を得ると私は考えて動作するはず

SELECT * FROM `database` WHERE `name` REGEXP '{INPUT TEXT HERE}'; 

を行い、それらをエスケープします。

+0

LIKEは高速ですが、REGEXPからより正確な結果を得ることができます。あなたの必要に応じて –

0

あなたはLIKE句を使用して、データベース内のフィールドに単純な検索を行うことができます。

$query = "SELECT Fields FROM Table WHERE TestField LIKE '%".$escapedTextString."%'"; 
0

は、検索語の大文字にバージョンに対するLIKE検索を行います。 mysql_real_escape_string()を忘れないでください。

$searchpattern = mysql_real_escape_string(strtoupper("Jo Smi")); 
mysql_query("SELECT * FROM table WHERE UPPER(column) LIKE '%$searchpattern%';"); 
0
あなたはそれ大文字 使用 strtoupper();

ようにしたい場合は、変数=> $name = $_GET['name'];

  • を取得

    こんにちはマン以前の答えは 良いのですが、あなたは

    1. この情報を知りたいです

    2. したい場合 するそれを作る小文字の使用 strtolower();
    3. あなたが 検索したい場合は、ABCで ようwhere name = $nameこの情報
    4. where name like $name
    5. ABC%=>変数開始と=交換し、任意のもの
    6. % ABC%=>変数で終了しなければなりません任意のものを起動し、含まれているABC、任意のもの
    7. %のABC =>変数と仕上げは任意のもの、ABC