2014-07-23 12 views
7

मेरे पास एक स्क्रिप्ट है जो एक CSV फ़ाइल में आउटपुट कर रही है। हालांकि, हालांकि डेटाबेस में वर्तमान में एक पंक्ति है, फिर भी मैं जो आउटपुट प्राप्त कर रहा हूं वह तालिका में प्रत्येक पंक्ति से प्रत्येक कॉलम को दोहरा रहा है।पीडीओ तैयार कथन लाने() दोहरे परिणाम लौटने

उदाहरण के लिए: 1,1, जॉन, जॉन, स्मिथ, स्मिथ, 2014,2014 1, जॉन, स्मिथ, 2014

यह ठीक काम किया इससे पहले कि मैं पीडीओ और तैयार बयान के साथ चला गया होना चाहिए, इसलिए मैं सोच रहा हूं कि मैं समझ नहीं पा रहा हूं कि fetch() सही ढंग से कैसे काम करता है। नीचे मेरा कोड है। कोई विचार क्या मैं गलत कर सकता था?

// get rows 
$query_get_rows = "SELECT * FROM Contacts ORDER BY date_added DESC"; 
$result_get_rows = $conn->prepare($query_get_rows); 
$result_get_rows->execute();   
$num_get_rows = $result_get_rows->rowCount(); 

while ($rows_get_rows = $result_get_rows->fetch()) 
{ 
    $csv .= '"'.join('","', str_replace('"', '""', $rows_get_rows))."\"\n"; 
} 
echo $csv; 
exit; 

उत्तर

16

आप पीडीओ को कहना चाहिए, कि आप केवल एक साहचर्य सरणी या कोई क्रमांकित सरणी हैं:

while ($rows_get_rows = $result_get_rows->fetch(PDO::FETCH_ASSOC)) 

एक साहचर्य सरणी या

while ($rows_get_rows = $result_get_rows->fetch(PDO::FETCH_NUM)) 

प्राप्त करने के लिए एक सरणी अनुक्रमित पाने के लिए कॉलम संख्या

PDOStatement::fetch

fetch_style

नियंत्रण कैसे अगली पंक्ति फोन करने वाले को लौटा दी जाएगी। यह मान पीडीओ :: FETCH_ * स्थिरांक में से एक होना चाहिए, जो पीडीओ :: ATTR_DEFAULT_FETCH_MODE (जो पीडीओ :: FETCH_BOTH) के लिए डिफ़ॉल्ट है।

पीडीओ :: FETCH_ASSOC: के रूप में एक सरणी स्तंभ नाम द्वारा अनुक्रमित रिटर्न अपने परिणाम में लौटे सेट

पीडीओ :: FETCH_BOTH (डिफ़ॉल्ट): रिटर्न एक सरणी से दोनों स्तंभ नाम और 0 से इंडैक्स अनुक्रमित आपके परिणाम सेट में लौटाए गए कॉलम नंबर

+0

धन्यवाद स्पष्टीकरण। मुझे लगता है कि इस बार यह केवल fetch_assoc द्वारा काम किया था। var_dump वास्तव में दिखाता है कि आपने क्या पोस्ट किया है! – Hugo

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