2013-03-08 7 views
6

पर नहीं लिखा जाएगा मैंने व्यापक डिबगिंग की खोज और खोज की है और किया है और मेरे जीवन के लिए यह पता नहीं लगा सकता कि क्यों fputcsv मेरे लिए काम नहीं कर रहा है।PHP में fputcsv फ़ाइल

मैं सफलतापूर्वक .csv फ़ाइल खोल सकता हूं और इसे लिख सकता हूं।

मेरा डिबगिंग साबित करता है कि सरणी ठीक से लोड हो गई है और फ़ोरैच लूप सही तरीके से काम कर रहा है। हालांकि, fputcsv फ़ंक्शन कुछ भी लिखने में विफल रहता है। मैंने उन सभी तारों को हटा दिया है जिन्हें मैं यूआरएल आदि जैसी समस्या का कारण बन सकता हूं, लेकिन यह अभी भी नहीं लिखेगा।

मैं इस माहौल तक पहुंचने वाला एकमात्र व्यक्ति हूं, इसलिए मुझे पता है कि यह फ़ाइल लॉक संघर्ष नहीं है। मैं फ़ाइल बना सकता हूं और इसे लिख सकता हूं, इसलिए मुझे पता है कि यह अनुमति अनुमति नहीं है। और, मुझे फ़ोरैच लूप से डीबग आउटपुट मिलता है, इसलिए मुझे पता है कि यह सरणी या लूप के साथ कोई समस्या नहीं है।

मैं अपने कोड और नीचे डीबग लॉग प्रदान करेंगे ...

$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 फ़ाइल में प्रकट होता है (जैसा कि आप उपरोक्त डीबग कोड में देख सकते हैं) "यह फ़ाइल खुली है और काम कर रही है।"

किसी भी विचार के किसी भी विचार की सराहना की जाएगी!

बहुत बहुत धन्यवाद !!!

ट्रिप

+0

आपको fputcsv कॉल के वापसी मूल्यों को लॉगिंग करना चाहिए। यह सफल होने पर लिखा बाइट्स की संख्या वापस करेगा, अन्यथा बूलियन झूठी। चूंकि आपको कोई प्रतिक्रिया कोड नहीं मिलता है, यह शायद लूप के अंत में एक बूलियन झूठा है, जो आमतौर पर गैर-प्रिंट करने योग्य होता है। –

उत्तर

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

अह्ह्ह, वह था! आप खूबसूरत हैं! बहुत बहुत धन्यवाद और एक महान सप्ताहांत है! - यात्रा – user2149399

+3

उत्तर स्वीकार नहीं है! उसे प्रतिनिधि की जरूरत नहीं है! वह लोगों की मदद करने के लिए यह करता है! – rdlowrey

+0

एलओएल! सभी को धन्यवाद! – user2149399

संबंधित मुद्दे