-1

ユーザーがファイルをアップロードするサイトがあり、それらをさまざまな配列に解析してから、MySQL データベースに保存します。問題は、一部の特殊文字 (たとえば ø やフランス語の他の文字など) が原因で、シリアル化された配列が全体として格納されないことです。

たとえば、配列が の場合、データベースに入りAAAAAAAAAAAAAøbbbbbbbbbbbbbcccccccccccますAAAAAAAAAAAAA。残りは失われます。シリアル化された配列をアップロードする前に、mysql_real_escape_stringそれを行います。マジック クォートはオフで、文字列Longtextは.utf8_unicode_ciutf8_unicode_ci collation

文字列をインポートするコードは次のとおりです。

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))."'  
    )");

私は何を間違っていますか?

4

1 に答える 1

-1

最後に、「修正」するために行ったこと (望んだ方法ではありませんが、機能します) は、フィールドを から に変更したLONGTEXTことLONGBLOBSです。

現在、データに関連付けられている照合はなく、すべてが機能しているようです。もちろん、マイナス面として、すべてがバイナリになっているため、データベース内のデータを見ることはできませんが、前に述べたように、動作します!

于 2012-04-20T12:35:07.040 に答える