我在PHP / MySQL工作。
我的数据库中有一个名为hourly的表,在该表中,它们是一个名为webaddress的列,这些列是序列化的。每个webaddresses列都有多行,每行都是序列化的。
我需要拉动每一行,取消它们,然后将它们放入一个数组中。
我尝试使用这段代码,但由于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
答案 0 :(得分:2)
编辑:现在根据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);
}
如果有三个db行,并且每个字段都有一个包含三个项目的序列化数组,$ collection现在包含一个包含9个项目的数组。
答案 1 :(得分:0)
将其更改为$test[] = unserialize($row[0])
。
它会将您的数据反序列化为数组,然后将该数组推送到$test
数组中。要查看它的外观,请在循环后添加以下行:
print_r($test);
会是这样的:
array(
[0] => array(
// ... the first record's data
),
[1] => array(
// ... the second record's data
),
// etc
)