0

ここ数日、問題に頭を悩ませています。問題を解決するためのヒントが必要です。

私はこのようなSQLクエリを持っています

    mysql_real_escape_string($value);
    $sql_first = "SELECT `user_id` FROM `usermeta` WHERE `meta_value` = '".$value."'


$valueに次のような文字が含まれていない場合は正常に機能ä ü ö ø

しますデータベースの照合は次のようになりますutf8_general_ci

php関数といろいろ組み合わせてみましたが、うまくいきconv()ません。

$valueUTF-8に変換する必要があると思います-これは正しい方向に進んでいますか?

4

2 に答える 2

1

プリペアドステートメントを使用すると、データベースドライバーがすべてを実行し、ボーナスとしてSQLインジェクション攻撃を受けることはありません。

http://php.net/manual/fr/mysqli.prepare.phpを参照してください

于 2012-05-12T11:53:16.183 に答える
0

utf8_unicode_ci 照合を試してみようと思います

このリンクから:

主な違いは次のとおりです。

  1. utf8_unicode_ciは、いわゆる拡張と合字をサポートします。たとえば、ドイツ語の文字ß(U + 00DF LETTER SHARP S)は「ss」の近くにソートされます。文字Œ(U + 0152 LATIN CAPITAL LIGATURE OE)は「OE」の近くにソートされます。

utf8_general_ciは展開/合字をサポートしていません。これらすべての文字を単一の文字として、場合によっては間違った順序で並べ替えます。

  1. utf8_unicode_ciは、通常、すべてのスクリプトでより正確です。たとえば、キリル文字ブロックの場合:utf8_unicode_ciは、ロシア語、ブルガリア語、ベラルーシ語、マケドニア語、セルビア語、ウクライナ語のすべての言語に適しています。utf8_general_ciは、ロシア語とブルガリア語のキリル文字のサブセットにのみ問題ありません。ベラルーシ語、マケドニア語、セルビア語、およびウクライナ語で使用される余分な文字は、適切にソートされていません。

utf8_unicode_ciの欠点は、utf8_general_ciよりも少し遅いことです。

したがって、より適切な並べ替え順序が必要な場合はutf8_unicode_ciを使用し、パフォーマンスに完全に関心がある場合はutf8_general_ciを使用します。

于 2012-05-12T11:56:33.850 に答える