-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

最后,我所做的“修复”(不是我想要的方式,但它有效)问题是我将字段从 更改LONGTEXTLONGBLOBS.

现在没有附加到数据的排序规则,一切似乎都正常。当然,不利的一面是,我看不到数据库中的数据,因为现在一切都是二进制的,但正如我之前所说,它可以工作!

于 2012-04-20T12:35:07.040 回答