我有一个用户上传文件的站点,我将它们解析成不同的数组,然后将它们存储在MySQL数据库中。问题是一些特殊的字符 - 例如ø或其他来自法语的字符 - 导致序列化数组不能作为一个整体存储。
例如,如果数组是AAAAAAAAAAAAAøbbbbbbbbbbbbbccccccccccc
,我将在数据库中获得AAAAAAAAAAAAA
。其余的将会丢失。在我上传序列化数组之前,我mysql_real_escape_string
。魔术引号已关闭,字符串存储在Longtext
字段中,utf8_unicode_ci
归类在数据库中utf8_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))."'
)");
我做错了什么?
答案 0 :(得分:-1)
最后,我做了什么来“修复”(不是我想要的方式,但它有效)问题是我将字段从LONGTEXT
更改为LONGBLOBS
。
现在没有附加到数据的排序规则,一切似乎都有效。当然,在缺点方面,我无法看到数据库中的数据,因为现在一切都是二进制的,但正如我之前所说,它有效!