如何解析mySql表的单个字段中的多个值?

时间:2019-07-16 11:30:34

标签: php html mysql wordpress

我正在使用mySql中的房地产数据库。与wordpress网站一起使用。 列出的每个属性在联接表中都有相关的代理。一个属性可能有多个代理。 但是,在一个字段中列出了多个代理。 (因此,join是1-1)。 这是一个例子

a:2:{i:0;s:4:"1995";i:1;s:3:"260";}

因此,这似乎是某种数组实现。我对此没有太多经验,因为无论如何这都是在关系数据库中存储数据的一种糟糕方法。 在此示例中,有2个代理。 我知道:
 -第一个“ 2”可能是指座席人数。
 -“ 1995”和“ 260”是代理记录的记录ID。
我该如何设计一条SQL语句从php提取这两个记录ID(并在主记录中找到相关数据)?
如果这是一个麻烦的解决方案,我想创建一个新的SQL视图以简化访问。有可能吗?
如果有的话,我找不到解释此字段的任何php函数。
不能重新设计表。

编辑:
当我阅读所指出的类似问题的答案时,我得出的结论是,这很可能是不可能做到的。而且很荒谬。
解决方案需要反复使用SUBSTRING_INDEX。多少次,每次都可能有所不同。即使指定了值的数量,也可能无法在MySQL中完成。我将不得不处理由此产生的限制。

1 个答案:

答案 0 :(得分:0)

您提到的数据格式为php's serialization format。在JSON接管世界之前,Rasmus Lerdorf和php创建者想出了自己的方法。

WordPress大量使用了这些东西。

php's unserialize() function将其从该字符串表示形式转换为适当的php对象。

如果必须的话,可以使用MySQL string functionsLOCATE()之类的SUBSTRING()从那些序列化的字符串中提取某些值。但这将是一个巨大的麻烦,并且非常特定于序列化的对象。