2012-04-19 3 views
-1

私はユーザーがファイルをアップロードするサイトを持っています。それらをさまざまな配列に解析し、それらをMySQLデータベースに格納します。問題は、—などのフランス語のøなどの特殊文字は、たとえば—のように、シリアライズされた配列全体が格納されないということです。特殊文字に遭遇したときにMySQLがデータを保存しない

たとえば、配列がAAAAAAAAAAAAAøbbbbbbbbbbbbbcccccccccccの場合、データベースにはAAAAAAAAAAAAAが返されます。残りは失われます。シリアル化された配列をアップロードする前に、私はmysql_real_escape_stringです。マジック引用符はオフで、文字列はフィールドに格納され、utf8_unicode_ci collationのデータベースにutf8_unicode_ciの照合順序で格納されます。

mysql_query(" INSERT INTO logs(uploaderid,date,randomstring,array1,array2, 
    array3,array4) 
    VALUES(
     '".$_SESSION['id']."', 
     NOW(), 
     '".mysql_real_escape_string($stringvalue)."', 
     '".mysql_real_escape_string(serialize($array1))."', 
     '".mysql_real_escape_string(serialize($array2))."', 
     '".mysql_real_escape_string(serialize($array3))."', 
     '".mysql_real_escape_string(serialize($array4))."' 
    )"); 

は私が間違って何をやっている:ここで

は、文字列をインポートコードですか?

+0

array1..array4のデータ型は何ですか? – ajreal

+0

プログラムではなく、mysqlクライアントプログラムを介して問題の原因となったデータを挿入し、結果を投稿できますか? – tuxuday

+0

私は手動で結果の文字列をインポートしようとしました:echo mysql_real_escape_string(serialize($ array1)); phpmyadminを介してデータベースにすべて格納されていた。 (OK、バックスラッシュはエスケープされた文字からは削除されませんが、特殊文字はcorectlyに保存されました)。 – wildking

答えて

-1

最終的には、私が修正したかったのですが、問題は、フィールドをLONGTEXTからLONGBLOBSに変更したことです。

データに付随する照合は存在せず、すべてが機能しているようです。もちろん、すべてのバイナリなのでデータベースのデータは見えませんが、前に述べたように、うまくいきます!

関連する問題