2

私のphpスクリプトでは、

$names = $_GET['part'];
$result = mysql_query("SELECT * FROM  namestable where names LIKE'%$names%' LIMIT 10");
while ($row = mysql_fetch_assoc($result)) {
        $colors[]=$row['publishers'];
}

一致をチェックし、うまく機能します。

しかし、私のテーブルの名前が Alfred だとすると、入力Alfrした場合にのみ提案が表示され、入力した場合は表示されませんalfr

4

1 に答える 1

1

提供した例は、などの大文字と小文字を区別しない照合を使用している場合に機能しますutf8_general_ci。(詳細については、MySQL文字セットサポートのマニュアルセクションを参照してください。)

または、次のようにLOWER関数を使用することもできます。

$names = strtolower(mysql_real_escape_string($_GET['part']));
$result = mysql_query("SELECT * FROM namestable WHERE names LIKE LOWER('%$names%') LIMIT 10");

ちなみに、単純な大文字小文字の変更以外の違いを見つけようとしている場合は、MySQLのSOUNDEX関数を使用して、類似しているように聞こえる文字列の一致を取得して見つけることもできます。

ちなみに、$ names変数でmysql_real_escape_stringを使用するか、(さらに良いことに)mysqliまたはPDOインターフェースを介してプリペアドステートメントを使用する必要があります。

于 2011-02-13T15:38:52.727 に答える