【问题标题】:How can I parse multiple values in a single field of a mySql table?如何解析 mySql 表的单个字段中的多个值?
【发布时间】:2019-11-25 03:09:35
【问题描述】:

我正在使用 mySql 中的房地产数据库。这与 wordpress 网站一起使用。 列出的每个属性在连接表中都有相关代理。一处房产可能有超过 1 个代理人。 但是,多个代理列在一个字段中。 (所以,连接是 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 中完成。我将不得不克服由此产生的限制。

【问题讨论】:

  • 那是序列化的PHP数据。你不能用 MySQL 反序列化它。
  • 您是否拥有/管理 Wordpress?如果是这样,您可以轻松地在子主题的自定义模板中创建自定义查询,以显示这些信息
  • @gael,是的,这正是我打算做的。问题是首先格式化自定义查询。根据上面提到的类似问题,它需要使用 SUBSTRING_INDEX 可变次数。不幸的是,这“超出了我的工资等级”。除非我能想出一些天才的解决方案,否则我可能不得不认输。

标签: php html mysql wordpress


【解决方案1】:

你提到的数据格式是php's serialization format。在 JSON 接管世界之前,Rasmus Lerdorf 和 php 创造者想出了他们自己的方式。

WordPress 使用了很多这样的东西。

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

如果必须,您可能可以使用MySQL string functions(如LOCATE() 和SUBSTRING())从这些序列化字符串中提取某些值。但这将是一个巨大的痛苦,并且非常特定于被序列化的对象类型。

【讨论】:

    猜你喜欢
    • 2015-12-10
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 2014-10-13
    • 1970-01-01
    • 2010-10-20
    相关资源
    最近更新 更多