MySQL在遇到特殊字符时不存储某些数据

时间:2012-04-19 12:12:45

标签: mysql special-characters

我有一个用户上传文件的站点,我将它们解析成不同的数组,然后将它们存储在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))."'  
    )");

我做错了什么?

1 个答案:

答案 0 :(得分:-1)

最后,我做了什么来“修复”(不是我想要的方式,但它有效)问题是我将字段从LONGTEXT更改为LONGBLOBS

现在没有附加到数据的排序规则,一切似乎都有效。当然,在缺点方面,我无法看到数据库中的数据,因为现在一切都是二进制的,但正如我之前所说,它有效!