2012-08-14 7 views
5

हर बार मैं एक सरणी mysql_fetch_array चलाने डुप्लिकेट मानों उदा के साथ वापस आ रहा है नकलmysql_fetch_array रिटर्न डेटा

Array 
(
    [0] => 1 
    [row_id] => 1 
    [1] => some text 
    [first_field] => some text 
    [2] => some text 
    [second_field] => some text 
} 

लेकिन मैं केवल सरणी में एक परिणाम चाहते हैं, मैं

mysql_fetch_array($data, MYSQL_ASSOC); 

उपयोग करने की कोशिश की है लेकिन यह कोई फर्क नहीं पड़ता।

+0

inb4, पीडीओ या mysqli –

+0

अपनी क्वेरी और अपनी तालिका संरचना दिखाएं। – Jocelyn

+1

कृपया 'mysql' एक्सटेंशन का अब और उपयोग न करें! पीडीओ या MySQLi का उपयोग करना बेहतर है। – ComFreek

उत्तर

12

यह mysql_fetch_array() की इच्छित कार्यक्षमता है। यदि आप "डुप्लीकेट" नहीं चाहते हैं और केवल एसोसिएटिव-सरणी है, तो इसके बजाय mysql_fetch_assoc() का उपयोग करें।

उदाहरण:

while ($row = mysql_fetch_assoc($data)) { ... } 
+3

'mysql_fetch_array ($ डेटा, MYSQL_ASSOC); 'mysql_fetch_assoc के समान ही होगा। – Jocelyn

+0

@ जोसेलीन मुझे इसके बारे में पता है - हालांकि - [मैनुअल] (http://php.net/manual/en/function] के अनुसार, 'MYSQL_ASSOC' का उपयोग करने का कोई तरीका नहीं है ओपी प्रदर्शित आउटपुट के साथ एक सरणी लौटाएगा .mysql-फ़ेच-array.php)। – newfurniturey

+0

@ mk_89 मैंने अभी 'mysql_fetch_array ($ डेटा, MYSQL_ASSOC)' के साथ परीक्षण किया है और दोहराना नहीं कर सकता (यानी - यह काम कर रहा है कि यह कैसे होना चाहिए) इसलिए मैं जवाब नहीं दे सकता कि यह आपके मामले में क्यों विफल होगा। 'Mysql_fetch_assoc()' का उपयोग करने का प्रयास करें और देखें कि क्या यह समस्या हल करता है। – newfurniturey

0

manual से:

तार की एक सरणी गलत है कि प्राप्त किए गए पंक्ति से मेल खाती है, या अगर कोई और अधिक पंक्तियाँ हैं देता है। लौटे सरणी के प्रकार कैसे RESULT_TYPE परिभाषित किया गया है पर निर्भर करता है। MYSQL_BOTH (डिफ़ॉल्ट) का उपयोग करके आप दोनों साहचर्य और संख्या सूचकांक के साथ एक सरणी मिल करेंगे। MYSQL_ASSOC का उपयोग करके, आप केवल mySql_fetch_assoc() कार्यों के रूप में सहयोगी सूचकांक प्राप्त करते हैं), MYSQL_NUM का उपयोग करके, आपको केवल संख्या सूचकांक मिलते हैं ( mysql_fetch_row() काम करता है)।

दूसरे शब्दों में, चूंकि MYSQL_BOTH डिफ़ॉल्ट है, तो आप दोनों वापस आते हैं। आप एक एसोसिएटिव सरणी या न्यूमेरिक सरणी वापस पाने के लिए या तो MYSQL_ASSOC या MYSQL_NUM निर्दिष्ट कर सकते हैं। आप mysql_fetch_assoc() का भी उपयोग कर सकते हैं जो केवल एक सहयोगी सरणी लौटाएगा। (पहले क्षेत्र यानी 0

+0

ओपी ने पहले से ही MYSQL_ASSOC की कोशिश की है। – Jocelyn

1

उपयोग mysql_fetch_assoc() associtive सरणी, या एक संख्यात्मक सरणी

+0

'mysql_fetch_array ($ डेटा, MYSQL_ASSOC); 'mysql_fetch_assoc के समान ही होगा। – Jocelyn

0

mysql_fetch_array() के लिए mysql_fetch_row के लिए दोनों साहचर्य कुंजियों (फ़ील्ड नाम प्रश्नों द्वारा निर्दिष्ट) और पूर्णांक स्थिति कुंजी वाला एक सरणी देता है, 1 , दूसरा है, आदि)। यह किसी भी विधि से डेटा तक पहुंचने में सुविधा के लिए है।

यदि आप केवल नाम कुंजी चाहते हैं, तो आपको mysql_fetch_assoc() या बेहतर अभी तक उपयोग करना चाहिए, mysqli फ़ंक्शंस का उपयोग करें क्योंकि यहां पर मौजूद सभी पुराने mysql_ * फ़ंक्शंस का उपयोग करने के लिए आपको लामस्ट करेंगे।

+0

'mysql_fetch_array ($ डेटा, MYSQL_ASSOC); 'mysql_fetch_assoc के समान ही होगा। – Jocelyn

+0

@ जोसेलीन हाँ यह होगा। हालांकि, मैं डाउनवोट को समझ नहीं पा रहा हूं, क्योंकि अधिकांश डेवलपर जो पुराने mysql_ * फ़ंक्शंस का उपयोग किसी भी समय के लिए करने से परिचित थे, आमतौर पर mysql_fetch_assoc का उपयोग करेंगे और फ़ंक्शन कॉल पर उचित ध्वज सेट करने के बारे में चिंता करने की आवश्यकता नहीं है। –

3

mysql_fetch_array रिटर्न परिणामसेट निष्पादन और संख्यात्मक सरणी दोनों के रूप में क्वेरी निष्पादन के जवाब के रूप में लौटाया गया परिणाम। साहचर्य सरणी के रूप में resultset लौटने के लिए आप mysql_fetch_assoc फ़ंक्शन का उपयोग करना। संख्यात्मक सरणी के रूप में resultset लौटने के लिए आप mysql_fetch_row फ़ंक्शन का उपयोग करना।

0

mysqli_fetch_array($result, MYSQL_ASSOC) यह मेरे लिए काम किया है जैसा कि ऊपर दिया गया है mysql_fetch_assoc, PHP5.5 में अब इसे हटा दिया गया है।

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