mysql数据库中的序列化数据需要组合成一个数组

2024-03-21

我正在 PHP/MySQL 工作。

我的数据库中有一个名为 hourly 的表,该表中有一个名为 webaddress 的列,这些列已序列化。每列网址有多行,每个网址都是序列化的。

我需要拉出每一行,取消它们的序列化,然后将它们放入一个数组中。

我尝试使用这段代码,但由于 PHP 函数的限制,它只获取 1 行。

while ($row = mysql_fetch_array($results)) {$test = unserialize($row[0]);}

我在想这样的事情可能会起作用:

while(($row = mysql_fetch_array($results)) !== FALSE) {$test[] = $row;}

那没用...

如何抓取每一行,然后取消序列化,然后将其添加到数组中?我只需要 web_addresses 字段中的数据,目前有 3 行数据。因此,每个 web_addresses 字段中都会有 3 个序列化数组,我需要将其反序列化并组合到另一个数组中。希望这更有意义。


这是 MySQL 表:

CREATE TABLE `hourly` (
  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `id` bigint(20) NOT NULL auto_increment,
  `month` longtext NOT NULL,
  `day` longtext NOT NULL,
  `year` longtext NOT NULL,
  `source` longtext NOT NULL,
  `web_address` longtext NOT NULL,
  `at_replies` longtext NOT NULL,
  `words` longtext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1

EDIT:现在反映了基于 OP 信息的更新:

从你的问题看来each行有一个序列化列,该列包含每行三个项目的序列化数组。所以这应该有效:

$collection = array();
while ( $row = mysql_fetch_array($results)) {
    $values = unserialize($row[0]);
    # $values has unserialized the data into its own array with 3 items

    $collection = array_merge($collection, $values);
}

如果有三个数据库行,并且每个字段都有一个包含三个项目的序列化数组,则 $collection 现在包含一个包含 9 个项目的数组。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql数据库中的序列化数据需要组合成一个数组 的相关文章

随机推荐