【问题标题】:Serialized data in mysql database needs to combined in an arraymysql数据库中的序列化数据需要组合成一个数组
【发布时间】:2009-11-30 02:00:16
【问题描述】:

我正在使用 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

【问题讨论】:

    标签: php mysql serialization


    【解决方案1】:

    编辑:现在反映基于 OP 信息的更新:

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

    $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);
    }
    

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

    【讨论】:

      【解决方案2】:

      将其更改为$test[] = unserialize($row[0])

      它会将您的数据反序列化为一个数组,然后将该数组推入$test 数组。要查看它的外观,请在循环之后添加以下行:

      print_r($test);
      

      会是这样的:

      array(
          [0] => array(
              // ... the first record's data
          ),
          [1] => array(
              // ... the second record's data
          ),
          // etc
      )
      

      【讨论】:

        猜你喜欢
        • 2015-08-27
        • 1970-01-01
        • 1970-01-01
        • 2014-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多