我想更新 mysql 表的 meta_value
列上的序列化值。但是很难从 sql 中选择 json。我怎样才能实现。
a:2:{i:0;a:2:{s:19:"sevent_speaker_name";s:8:"John Doe";s:18:"sevent_speaker_img";a:1:{i:0;s:5:"72921";}}i:1;a:2:{s:19:"sevent_speaker_name";s:10:"John Smith";s:18:"sevent_speaker_img";a:1:{i:0;s:5:"72922";}}}
这是值(value)。我想用 elevent
替换所有 sevent
但我该怎么做呢?
我可以使用 LIKE
吗?但首先它需要反序列化吗?
最佳答案
此编码信息可能来自 WordPress 或其他一些 PHP 框架的数据库;这不是 JSON。请注意,字符串是通过存储字符串长度和字符串内容进行编码的:
s:19:"sevent_speaker_name"
可以使用MySQL的REPLACE
函数将sevent
替换为elevent
,但是一定要注意更新长度值s
也一样,否则 WordPress/PHP 将无法读取数据。
可以编写一个 MySQL 查询来更新上面给出的具体示例,但是很难编写一个查询来通用地替换所有字符串。这是一个 tool就可以了。
关于php - 更新mysql中的序列化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51854120/