数据存储在json中

时间:2011-10-04 19:56:11

标签: php mysql json

我的数据存储在像这样的JSON字符串中......

a:1:{s:15:"s2member_level1";s:1:"1";}

我如何在mysql中读取这些值?

我需要知道值“s2member_level1”是否为1。

感谢!!!

4 个答案:

答案 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";}'));

...将其反序列化。