私はユーザーがファイルをアップロードするサイトを持っています。それらをさまざまな配列に解析し、それらを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))."'
)");
は私が間違って何をやっている:ここで
は、文字列をインポートコードですか?
array1..array4のデータ型は何ですか? – ajreal
プログラムではなく、mysqlクライアントプログラムを介して問題の原因となったデータを挿入し、結果を投稿できますか? – tuxuday
私は手動で結果の文字列をインポートしようとしました:echo mysql_real_escape_string(serialize($ array1)); phpmyadminを介してデータベースにすべて格納されていた。 (OK、バックスラッシュはエスケープされた文字からは削除されませんが、特殊文字はcorectlyに保存されました)。 – wildking