2013-03-08 10 views
6

Ho cercato e cercato e fatto il debugging completo e per la vita di me non riesco a capire perché fputcsv non funziona per me.fputcsv in PHP non scriverà sul file

Posso aprire con successo il file .csv e scrivere ad esso.

Il mio debug dimostra che l'array è stato caricato correttamente e che il ciclo foreach funziona correttamente. Tuttavia, la funzione fputcsv non riesce a scrivere nulla. Ho rimosso tutte le stringhe che però potrebbero causare un problema come URL ecc., Ma non scriverò ancora.

Sono l'unica persona con accesso a questo ambiente, quindi so che non è un conflitto di blocco file. Posso creare il file e scrivere su di esso, quindi so che non è un problema di autorizzazioni. E, ottengo l'output di debug dal ciclo foreach, quindi so che non è un problema con l'array o il ciclo.

vi fornirò il mio codice e registro di debug di sotto ...

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

Ed ecco il log di debug risultante ...

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. 

Tutto ciò che appare nel file .csv è (come puoi vedere nel codice di debug sopra) "Questo file è aperto e funzionante."

Ogni pensiero che qualcuno possa avere sarebbe molto apprezzato!

Grazie mille !!!

viaggio

+0

È necessario registrare i valori di ritorno della chiamata fputcsv. restituirebbe il numero di byte scritti se è riuscito, booleano falso altrimenti. dal momento che non si riceve alcun codice di risposta, probabilmente è un falso booleano alla fine del ciclo, che generalmente non è stampabile. –

risposta

5

Il secondo argomento di fputcsv() dovrebbe essere un array, ma si sta passando una stringa, perché si sta loop un array di stringhe e la scrittura di ciascuno di essi singolarmente.

Ho il sospetto che si vuole proprio questo:

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

Se si vuole scrivere intestazioni di colonna pure, che immagino si potrebbe perché si sta utilizzando un array associativo, probabilmente si desidera una logica più simile a questa:

$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, era così! Sei bello! Grazie mille e buon fine settimana! - Trip – user2149399

+3

Non accettare la risposta! Lui non ha bisogno del rappresentante! Lo fa per aiutare le persone! – rdlowrey

+0

LOL! Grazie a tutti! – user2149399

Problemi correlati