2009-11-30 10 views
0

Je travaille en PHP/MySQL.Les données sérialisées dans la base de données mysql doivent être combinées dans un tableau

J'ai une table dans ma base de données appelée hourly dans cette table leur est une colonne nommée webaddress ceux-ci sont sérialisés. Il existe plusieurs lignes de chaque colonne d'adresses Web, chacune étant sérialisée.

Je dois tirer chaque rangée, les désarçonner puis les mettre dans un tableau.

J'ai essayé d'utiliser ce bit de code, mais il n'accepte que 1 ligne en raison des limitations des fonctions PHP.

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

Je pensais quelque chose comme ça pourrait fonctionner:

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

Cela ne fonctionne pas ...

Comment puis-je saisir chaque ligne, unserailize puis ajouter ensuite à un tableau? J'ai juste besoin des données dans le champ web_addresses actuellement il y a 3 rangées de données. Il y aurait donc 3 tableaux sérialisés dans chaque champ web_addresses dont j'ai besoin pour désérialiser et combiner dans un autre tableau. J'espère que cela a plus de sens.


Voici la table 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 

Répondre

2

EDIT: reflète maintenant les mises à jour sur la base d'informations par l'OP:

De votre question, il semble que chaque ligne a une colonne sérialisée, et cette colonne contient un tableau sérialisé de trois éléments par ligne. Donc, cela devrait fonctionner:

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

S'il y avait trois rangées de db, et chaque champ a un tableau sérialisé avec trois éléments, $ collection contient désormais un tableau avec 9 articles.

+0

Mes modifications peuvent vous aider à fournir plus d'informations. Je pense que vous êtes sur la bonne voie ... –

+0

Cela a fonctionné parfaitement. Merci! –

0

changement à $test[] = unserialize($row[0]).

Il désorganisera vos données dans un tableau, puis l'insérera dans le tableau $test. Pour voir à quoi il ressemble, après votre boucle, ajoutez cette ligne:

print_r($test); 

Ce sera quelque chose comme ceci:

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