2012-04-01 9 views
1

フリーテキスト検索フィールドを持つフォームからmysqlクエリを生成します。以下のような
何か:
SELECT ... FROM ... WHERE 'something' LIKE '%SEARCH%' 特殊文字(デンマーク文字:æøå)で呼び出すと、mysql_queryは何も返しません

このすべてが正常に動作して検索がデンマーク語の文字ÆØÅなどの特殊文字は、含まれていない場合に有効な行を返します。

これらの文字を使用すると、クエリは結果を返しませんが、生成されたクエリ文字列を取得してphpMyAdminにプラグインすると、私が望む結果が得られます。あなたは、エンコーディング(元のサーバースクリプト、データテーブルの自己ともあなたを使用し心に留めておく必要があります - 私はデンマークが、チェコの使用していないが、私は(少なくともUTF8の実装によって)同じことがあると思います

おかげ

+0

「」私はexacly私が望む結果を得る私は生成されたクエリ文字列を取るときけれども..allとphpMyAdminのに差し込みます。「」===申し訳ありませんが、これは、より詳細に説明することができますお願いします? – Xfile

答えて

1

mysql_set_charset("utf8", $db); 

クエリにそれを渡す前に、あなたはUTF-8にデータをエンコードすることが良いです...

+0

mysql_set_charsetはトリックを行います:)。 Genious。私はjsonを使用するので、結果を渡す前にutf8_encodeを使用します。しかし、私は文字列を実行する前にエンコードする場合、それは動作しないようです。 mysql_query(utf8_encode( "..."))と同様です。 – jborch

+0

接続が確立されたときにそれを実行する必要があります。そのため、クエリ文字列の前に追加するのではなく、connection.phpファイルに含めるように頼んだのです –

0

データベース接続ハンドラ)。

0

私はおそらくphpMyAdminがあなたの他のクライアントとは異なるクライアントエンコーディングを使用していると、エンコーディングの問題があると思います。 SET NAMES 'encoding'はあなたが必要とするものだけを行うべきだと私は思います。

0

また...あなたの接続ファイル内のコード行を追加します我々はPHP変数を使用し、選択操作の前にそれを変換することができます(データベースがISOO-8859-2であると仮定します)。

例:

// word with special characters 
$search='kötészeti'; 
// conversion to ISO 
$search=iconv("UTF-8","ISO-8859-2", $search); 
// create search condition 
$condition="SELECT ... FROM ... WHERE 'something' LIKE '%$search%'"; 
// apply query 
mysql_query($condition);