我的数据存储在像这样的JSON字符串中......
a:1:{s:15:"s2member_level1";s:1:"1";}
我如何在mysql中读取这些值?
我需要知道值“s2member_level1”是否为1。
感谢!!!
答案 0 :(得分:5)
这不是JSON,而是在PHP中调用serialize()
产生的字符串。你无法在MySQL中轻松解析它。如果您可以使用PHP,请使用unserialize
函数:
$obj = unserialize($data_from_mysql);
if ($obj['s2member_level1'] == 1) {
// more code here
}
您可以使用json_encode
函数将数据转换为PHP中的JSON。以类似的方式,您使用json_decode
从JSON字符串构造对象。
答案 1 :(得分:1)
@Lekensteyn是正确的,但你可以做一个like
声明,虽然它的表现很可能很差。我的真正答案是更改存储此信息的方式,以利用性能最佳的查询。
select * from table
where column like '%s:15:"s2member_level1";s:1:"1";%';
答案 2 :(得分:0)
@Lekensteyn关于这个特定String的类型是正确的,但对于其他人,PHP有json_decode,您可以使用它将JSON对象转换为PHP对象。使用MySQL读取这样的对象要困难得多。
答案 3 :(得分:0)
这不是json,而是序列化数据。它可能是使用PHP的'serialize'函数序列化的。尝试:
print_r(unserialize('a:1:{s:15:"s2member_level1";s:1:"1";}'));
...将其反序列化。