在mysql中有没有不使用php,只使用sql语言反序列化数据的方法?
使用woocommerce插件将购物车项目序列化存储在数据库中。目标是对cart表进行查询并获取cart项,然后将结果发送到api。购物车项目作为序列化数据存储在表中,如下所示:
a:1:{s:4:"cart";a:2:{s:32:"76dc611d6ebaafc66cc0879c71b5db5c";a:11:{s:3:"key";s:32:"76dc611d6ebaafc66cc0879c71b5db5c";s:10:"product_id";i:128;s:12:"variation_id";i:0;s:9:"variation";a:0:{}s:8:"quantity";i:1;s:9:"data_hash";s:32:"b5c1d5ca8bae6d4896cf1807cdf763f0";s:13:"line_tax_data";a:2:{s:8:"subtotal";a:0:{}s:5:"total";a:0:{}}s:13:"line_subtotal";d:500;s:17:"line_subtotal_tax";i:0;s:10:"line_total";d:500;s:8:"line_tax";i:0;}s:32:"65ded5353c5ee48d0b7d48c591b8f430";a:6:{s:3:"key";s:32:"65ded5353c5ee48d0b7d48c591b8f430";s:10:"product_id";i:132;s:12:"variation_id";i:0;s:9:"variation";a:0:{}s:8:"quantity";i:1;s:9:"data_hash";s:32:"b5c1d5ca8bae6d4896cf1807cdf763f0";}}}
在在线工具中反序列化后,我得到了以下结构:
Array
(
[cart] => Array
(
[76dc611d6ebaafc66cc0879c71b5db5c] => Array
(
[key] => 76dc611d6ebaafc66cc0879c71b5db5c
[product_id] => 128
[variation_id] => 0
[variation] => Array
(
)
[quantity] => 1
[data_hash] => b5c1d5ca8bae6d4896cf1807cdf763f0
[line_tax_data] => Array
(
[subtotal] => Array
(
)
[total] => Array
(
)
)
[line_subtotal] => 500
[line_subtotal_tax] => 0
[line_total] => 500
[line_tax] => 0
)
[65ded5353c5ee48d0b7d48c591b8f430] => Array
(
[key] => 65ded5353c5ee48d0b7d48c591b8f430
[product_id] => 132
[variation_id] => 0
[variation] => Array
(
)
[quantity] => 1
[data_hash] => b5c1d5ca8bae6d4896cf1807cdf763f0
)
)
)
每个对象属性都需要被访问并存储在列中,然后将查询结果发送到api。
如何用sql语言反序列化这些数据?
2条答案
按热度按时间b4wnujal1#
我一直在努力解决一个类似的问题:反序列化和序列化表wp\u postemta中的数据,对其中的某些部分进行搜索和替换(我正在翻译woocommerce网站,我更喜欢在mysql中完成这一切,而不是使用php)。在我的例子中,搜索和替换总是发生在第四个s元素上。我为此制定了一个计划。它可能不适合您的具体用例,但可能已经足够接近您的需求:
olhwl3o22#
serialize
php函数将数据结构序列化为php特有的字符串表示形式,并可以使用unserialize将其反转为php对象。mysql不知道php序列化是什么。你不能只使用sql。