1

データベースMySQL、照合Latin1、文字エンコーディングswedish_general_ciを持つフランスのクライアント向けのアプリケーションに取り組んでいます。私は、ISO 8859-15 標準に対応する ISO エンコーディング用語を想定しています (これは、1 バイト エンコーディングであり、「厄介な」文字が含まれています)。

テーブル 'mytable' には、次のレコード/行を持つ列 'mycolumn' があります。クエリは LIKE 句を使用した単純な SELECT であり、PHP からこれを行う場合を除いて、すべてが正しい結果を返します。

$tag = $_GET['search']; // the value of tag is ckecked as "cœ" (I printed in a file)
$res=query("SELECT * FROM `mytable` WHERE `mycolumn` LIKE '%" . $tag . "';");

上記の「Il est au cœur du débat」の結果が返されるはずですが、返されません (count($res) はゼロです)。コードから上記のクエリ ($tag を "cœ" に置き換えます) をコピーし、phpMyadmin に直接貼り付けて SQL を実行すると、正しく動作し、結果として行が表示されます。アクセント付きの文字は問題ではありません。私は何が欠けていますか?どうも

4

2 に答える 2

0

Web ページは UTF-8 ですか? その場合は、使用する前に変換する必要があります。また、データをクエリに渡す (または準備済みステートメントを使用する) 前に、少なくともデータをエスケープしてください。書かれているように、SQL インジェクションに対してオープンです。

于 2013-10-17T16:57:11.600 に答える