php/mysql:如何在文本mysql字段中插入GZED压缩字符串?

php/mysql:如何在文本mysql字段中插入GZED压缩字符串?,php,mysql,text,compression,gzip,Php,Mysql,Text,Compression,Gzip,我一直在尝试将json编码的字符串压缩并存储到mysql中,但我遇到了“意外/”错误 我还尝试使用如下的addslashes: addslashes(gzcompress(json_encode($mystring))); 展示 json_decode(gzuncompress(stripslashes($mystring))); 但它在插入时失败,出现了我提到的错误 我在某个地方读到一个带有gzcompress的字符串应该存储为blob,但我希望有一种方法可以将它存储在mysql文本字段中

我一直在尝试将json编码的字符串压缩并存储到mysql中,但我遇到了“意外/”错误

我还尝试使用如下的addslashes:

addslashes(gzcompress(json_encode($mystring)));
展示

json_decode(gzuncompress(stripslashes($mystring)));
但它在插入时失败,出现了我提到的错误

我在某个地方读到一个带有gzcompress的字符串应该存储为blob,但我希望有一种方法可以将它存储在mysql文本字段中,这样我就不必再处理db了

PS:有些人要求提供完整的错误信息,如下所示:

警告:输入中出现意外字符:'\'(ASCII=92)状态=1

PDOException:SQLSTATE[HY000]:一般错误:1366错误字符串 值:'\x9C\xED}\x8Br\xDB…'对于位于 第一排


为什么要将gzip压缩字符串添加到数据库中?为什么不将其存储为:


mysql\u real\u escape\u字符串(json\u encode($myArray))
将其存储为
BLOB
。即使有一种方法可以在往返过程中保存在
VARCHAR
*TEXT
字段中,这也是一种可怕的方法

你确定你需要压缩吗


您还可以让MYSQL进行压缩,例如,
INSERT-INTO-mytable(compressed\u-json)值(COMPRESS(“[\”the-json\”])

这是一个大数组,我希望压缩会使数组json编码的字符串更小。谢谢,我不确定,但gzcompress看起来是压缩字符串的好方法。gzcompress将研究blob方式。gzcompress生成二进制数据。
blob
列数据类型存储二进制数据。如果不使用gzcompress,则有使用
BLOB
(所有“BLOB”都是说“mysql,不要试图重写这些位。这不是文本,它没有编码”。如何放入位,无论是使用gzcompress还是
COMPRESS()
,都取决于您。)感谢它与BLOB一起工作。非常感谢。gzcompress占用的空间小得多。最后的数字已经出来了,设法将一个包含30000条记录、1.7GB、大json编码数组的表压缩到300MB:D哇太棒了。添加了一个新的BLOB字段、导入的文本字段和gzcompressed。然后删除了旧字段。应该使用mysql\u real\u escape\u字符串d而不是addslashes(不是说这会解决这个问题;我的意思是在一般情况下)。addslashes不知道字符集,而mysql_real_escape_string实际上知道数据库连接,可以更准确地转义数据。addslashes()这是PHP为帮助程序员所做的许多本不该做的事情之一。谢谢Corbin,我也会检查这一点。顺便问一句,谁知道这一点,请解释一下原因。存储“大数组”在关系数据库中没有什么意义。向他们提问时,不是提供完整的错误消息,而是提供一个存根,意思是“意外”更不合理。甚至不可能知道代码的哪一部分会出现这种情况stub@Corbinmysql\u real\u escape\u string也不知道,除非你明确告诉它,否则。因此,仅仅一个建议“使用它,而不是addslashes”实际上不会有任何改变。你确定吗?“转义未转义的_字符串中的特殊字符,考虑连接的当前字符集,以便安全地将其放置在mysql_查询()中。”至于可选的连接参数:“如果未指定链接标识符,则假定mysql_connect()打开的最后一个链接。”