php - 更新mysql中的序列化值
问题描述
我想更新meta_value
mysql 表上列上的序列化值。但是 json 很难从 sql 中选择。我怎样才能实现。
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";}}}
这是价值。我想全部替换sevent
,elevent
但我该怎么做?我可以使用LIKE
吗?但首先它需要被反序列化?
解决方案
此编码信息可能来自 WordPress 或其他 PHP 框架的数据库;它不是 JSON。请注意,字符串是通过存储字符串长度和字符串内容来编码的:
s:19:"sevent_speaker_name"
可以使用 MySQL 的REPLACE
函数替换sevent
为elevent
,但也必须注意更新长度值s
,否则 WordPress/PHP 将无法读取数据。
可以编写一个 MySQL 查询来更新上面给出的特定示例,但是很难编写一个查询来通用地替换所有字符串。这是一个可以完成工作的工具。
推荐阅读
- reporting-services - 矩阵 SSRS 的方差变化百分比
- javascript - Bootstrap:动态表上的数据排序
- mongodb - Fedora 29 MongoDB Compass 安装分段错误核心转储
- c# - 如何在 C# 中将数学运算符作为参数?
- c# - 使用 asp-action 从页面调用控制器方法
- ios - 如何将processSampleBuffer的samplebuffer从app Extension传递到ios中的控制器
- regex - REGEX - 如何用包含在双引号中的单词本身替换冒号之前的单词
- php - 如何从 PHP 中的字符串中获取特定值
- xamarin - xamarin UITest 不会在 iOS 上启动“干净”
- python - 在不失去价值重要性的情况下进行扩展 Python Sklearn