Я работаю в PHP / MySQL.
У меня есть таблица в моей базе данных, которая ежечасно в этой таблице называется столбцом с именем webaddress, которые сериализуются. Существует несколько строк каждого столбца webaddresses, каждый из которых сериализуется.
Мне нужно вытащить каждую строку, отменить их, а затем поместить в массив.
Я попытался использовать этот бит кода, но он хватает только 1 строку из-за ограничений функций PHP.
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:
Из вашего вопроса звучит так, что каждая строка имеет один сериализованный столбец, и этот столбец содержит сериализованный массив из трех элементов на строки. Поэтому это должно работать:
$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 элементами.
измените его на $test[] = unserialize($row[0])
.
Он будет неэтериализовать ваши данные в массиве, а затем вывести этот массив в массив $test
. Чтобы увидеть, как это выглядит, после вашего цикла добавьте эту строку:
print_r($test);
Это будет примерно так:
array( [0] => array( // ... the first record's data ), [1] => array( // ... the second record's data ), // etc )