Bir dizi kombine için mysql veritabanı ihtiyaçları tefrika veri

2 Cevap php

PHP / MySQL çalışıyorum.

Ben bu tablodaki saatlik adlandırılan benim veritabanında bir tablo bu Serileştirilen webaddress adında bir sütun onların olduğunu var. Her dizgeleştirilir webaddresses her sütunun birden fazla satır vardır.

Ben, her satır çekin bir diziye koymak daha sonra bunları unserailize gerekir.

Ben bu kod biraz kullanarak denedim ama çünkü sadece PHP fonksiyonları sınırlamaları 1 sıra kapmak.

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

Bu işe yarayabilecek gibi bir şey düşünüyordum:

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

Bu işe yaramadı ...

Nasıl her satırı yakala, o daha sonra bir dizi eklemek unserailize? Ben sadece şu anda veri 3 satır var web_addresses alandaki verileri gerekir. Yani unserialize ve başka diziye birleştirmek için gereken her web_addresses alanda 3 tefrika diziler olurdu. Umarım bu daha mantıklı.


Burada MySQL tablo:

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

2 Cevap

EDIT: Şimdi OP tarafından bilgi dayalı güncellemeleri yansıtır:

each satır bir tefrika sütun var ve bu sütun satır başına üç öğe tefrika dizi içerir gibi senin soru geliyor. Yani bu çalışması gerekir:

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

Orada üç db satır vardı ve her alan üç öğe ile tefrika dizi olsaydı, $ koleksiyon şimdi 9 maddeden oluşan bir dizi içerir.

$test[] = unserialize($row[0]) olarak değiştirin.

Bu bir diziye veri unserialize, ve sonra $test diziye bu diziyi itecektir. Nasıl göründüğünü görmek için, döngü sonra, bu satırı ekleyin:

print_r($test);

Bu gibi bir şey olacaktır:

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