2013-03-08 1 views
6

Я искал и обыскал и провел обширную отладку, и для меня жизнь не может понять, почему fputcsv не работает для меня.fputcsv в PHP не записывается в файл

Я могу успешно открыть файл .csv и написать ему.

Моя отладка доказывает, что массив правильно загружен и что цикл foreach работает правильно. Однако функция fputcsv вообще ничего не пишет. Я удалил все строки, которые могут вызвать проблемы, такие как URL-адреса и т. Д., Но они все равно не будут писать.

Я единственный человек, имеющий доступ к этой среде, поэтому я знаю, что это не конфликт файловой блокировки. Я могу создать файл и написать ему, поэтому я знаю, что это не проблема. И я получаю вывод отладки из цикла foreach, поэтому я знаю, что это не проблема с массивом или циклом.

я предоставлю свой код и отладки журнала ниже ...

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

А вот полученный журнал отладки ...

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 является (как вы можете видеть в отладочном коде выше) «Этот файл открыт и работает».

Любые мысли, которые могут быть приняты, были бы очень признательны!

Большое спасибо!

Trip

+0

Вы должны регистрировать возвращаемые значения вызова fputcsv. он вернет количество байтов, записанных, если это будет выполнено, в противном случае логическое значение false. так как вы вообще не получаете кода ответа, это, вероятно, логическое значение false в конце цикла, которое обычно не печатается. –

ответ

5

Второй аргумент fputcsv() должен быть массив, но вы передаете в строке, потому что вы зацикливание массив строк и записи каждого из них по отдельности.

Я подозреваю, что вы просто хотите:

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

Если вы хотите писать заголовки столбцов, а также, что я думаю, вы могли бы, потому что вы используете ассоциативный массив, вы, вероятно, хотите, чтобы некоторые логики больше, как это:

$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, вот и все! Вы прекрасны! Большое спасибо и отлично проведу выходные! - Trip – user2149399

+3

Не принимайте ответ! Ему не нужна репутация! Он просто делает это, чтобы помочь людям! – rdlowrey

+0

LOL! Спасибо всем! – user2149399