2013-02-25 142 views
0

我有一个使用Woocommerce/Wordpress构建基本ecomm商店的客户端。在数据库中,所有订单商品都被序列化。例如:数据库中的序列化SQL

a:1:{i:0;a:10:{s:2:"id";s:2:"25";s:12:"variation_id";s:0:"";s:4:"name";s:10:"The Hobbit";s:3:"qty";i:1;s:9:"item_meta";a:0:{}s:13:"line_subtotal";s:4:"17.5";s:17:"line_subtotal_tax";s:4:"1.84";s:10:"line_total";s:4:"17.5";s:8:"line_tax";s:4:"1.84";s:9:"tax_class";s:0:"";}} 

不是db天才 - 为什么会有数据序列化?这是否有益处?此外,是否可能通过反序列化SQL来检索该数组中的单个值?

回答

3

这不是序列化的SQL,它是序列化的数据,格式看起来像PHP的serialize()函数。您可以通过PHP运行unserialize(),但在原始SQL中没有可靠的方法来完成此操作。

在这种情况下,这似乎将无模式数据(即可能或可能不存在于特定记录的数据,本质上可能是任意的)保存到数据库中。

+0

谢谢@ceejayoz。如果我想创建数据库的CSV,您可以使用PHP对其进行反序列化并分离这些值吗? – SeekingCharlie 2013-02-25 23:17:52

+0

问题是,使用像这样的序列化数据是因为它不适合在一组严格的列中。你当然可以试着用PHP来处理它,并生成一个CSV文件,但是你可能会得到数百个列,其中很多列都是空的。 – ceejayoz 2013-02-25 23:24:01