2013-03-08 5 views
6

Ben kapsamlı hata ayıklama aradı ve yaptım ve hayatımın için fputcsv neden benim için çalışmadığını anlayamıyorum.PHP fputcsv dosyasına yazmayacak

.csv dosyasını başarılı bir şekilde açıp ona yazabilirim.

Hata ayıklama, dizinin düzgün şekilde yüklendiğini ve foreach döngüsünün doğru çalıştığını kanıtlıyor. Ancak, fputcsv işlevi hiç bir şey yazamaz. URL'ler vb. Gibi bir soruna neden olabileceğimi düşündüğüm tüm dizeleri kaldırdım ama yine de yazmayacak.

Bu ortama erişimi olan tek kişi benim, bu yüzden bir dosya kilit çakışması olmadığını biliyorum. Dosyayı oluşturabilir ve ona yazabilirim, bu yüzden bir izin sorunu olmadığını biliyorum. Ve, foreach döngüsünden debug çıktısı alıyorum, bu yüzden dizi veya döngü ile ilgili bir sorun olmadığını biliyorum.

Kodumu ve aşağıdaki hata ayıklama günlüğünü vereceğiz

...

$posts_meta = array(
    'twitter_title'  => $this_title, 
    'twitter_brandtag' => $this_brandtag, 
    'twitter_hashtags' => $this_hashtags, 
    'twitter_iterations' => $this_iteration, 
    'twitter_timing'  => $this_timing, 
    'twitter_time'  => $this_time, 
    'twitter_id'   => $post_id, 
); 

// Debuging 
file_put_contents("/blog/debug.txt", "About to write CSV file.\n", FILE_APPEND); 
file_put_contents("/blog/debug.txt", print_r($posts_meta, true)."\n", FILE_APPEND); 

$myfile = fopen('/blog/pdm_twitter_ouptut.csv', 'a+'); 

// More debugin 
file_put_contents("/blog/debug.txt", "myfile handle = ".$myfile."\n", FILE_APPEND); 
fwrite($myfile, "This file is open and working.\r\n"); 

foreach ($posts_meta as $fields){ 
    $fresponse = fputcsv($myfile, $fields); 

    // A little more debugging... 
    file_put_contents("/blog/debug.txt", $fields."\n", FILE_APPEND); 
} 

fclose($myfile); 

// And more debugging 
file_put_contents("/blog/debug.txt", "fputcsv response = ".$fresponse."\n", FILE_APPEND); 
file_put_contents("/blog/debug.txt", "Just closed CSV file.", FILE_APPEND); 

Ve burada çıkan hata ayıklama günlüğü olduğunu ...

About to write CSV file. 
Array 
(
    [twitter_title] => World Stocks Up As US Jobs, China Exports Improve 
    [twitter_brandtag] => - FP test 9 
    [twitter_hashtags] => #Economy #Markets #Business #Investing #Stocks 
    [twitter_iterations] => 12 
    [twitter_timing] => 240 
    [twitter_time] => 2013-03-08 07:55:24 
    [twitter_id] => 11051 
) 

myfile handle = Resource id #548 

// Print-out of $fields here... 
World Stocks Up As US Jobs, China Exports Improve 
- FP test 9 
#Economy #Markets #Business #Investing #Stocks 
12 
240 
2013-03-08 07:55:24 
11051 

fputcsv response =  // Hm!? I wonder why no response code? 
Just closed CSV file. 

.csv dosyası göründüğünü tek şey (Yukarıdaki hata ayıklama kodunda gördüğünüz gibi) Bu dosya açık ve çalışıyor.

Herkesin sahip olabileceği herhangi bir düşünce büyük takdir edilecektir!

Çok teşekkürler!

Yolculuk

+0

Fputcsv çağrısının geri dönüş değerlerini günlüğe kaydetmeniz gerekir. Başarılırsa yazılmış bayt sayısını döndürür, aksi takdirde yanlış olur. Hiçbir yanıt kodu almadığınız için, genellikle yazdırılamaz olan döngü sonunda bir false yanlıştır. –

cevap

5

fputcsv() ikinci değişken bir dizi olmalı, ama sen dize dizisi döngü ve tek tek her biri yazıyoruz çünkü bir dizede geçmektedir.

$myfile = fopen('/blog/pdm_twitter_ouptut.csv', 'a+'); 
fputcsv($myfile, $posts_meta); 

Eğer bir ilişkisel dizi kullanıyor çünkü öldürürsün tahmin yanı sıra, hangi sütun başlıkları yazmak istiyorsanız, muhtemelen daha bu gibi bazı mantık istiyorum:

Ben sadece bunu istiyorum şüpheli:

$filePath = '/blog/pdm_twitter_ouptut.csv'; 

$exists = file_exists($filePath) && filesize($filePath) > 0; 

$myfile = fopen($filePath, 'a+'); 

if (!$exists) { 
    fputcsv($myfile, array_keys($posts_meta)); 
} 

fputcsv($myfile, $posts_meta); 
+0

Ahhhh, işte bu! Güzelsin! Çok teşekkürler ve harika bir hafta sonu geçirin! - Trip – user2149399

+3

Cevabı kabul etme! Temsilciye ihtiyacı yok! Bunu insanlara yardım etmek için yapıyor! – rdlowrey

+0

LOL! Herkese teşekkürler! – user2149399