आप मूल रूप से गलत समझ रहे हैं कि ये चीजें कैसे काम करती हैं।
mysql_fetch_array
. में "सरणी" सभी रिकॉर्ड की एक सरणी नहीं है, बल्कि वर्तमान रिकॉर्ड के भीतर डेटा की एक सरणी है।
आपके मामले में, आप केवल एक ही फ़ील्ड ला रहे हैं, इसलिए सरणी में केवल एक ही तत्व होगा (यानी $row[0]
), लेकिन सिद्धांत एक ही है -- यह एकल रिकॉर्ड की एक सरणी है जिसे आपने अभी पढ़ा है।
किसी एक समय में केवल वर्तमान रिकॉर्ड का डेटा ही ऐरे में होता है। while
लूप के लिए है; यह प्रत्येक रिकॉर्ड को एक के बाद एक लोड करता है।
यदि आप एक ऐसा सरणी बनाना चाहते हैं जिसमें सारा डेटा हो, तो आपको इसे इस तरह करना होगा:
$fullData = array()
while($row = mysql_fetch_array($tableIndex) ){
$fullData[] = $row[0];
}
यह आपके द्वारा पढ़े जा रहे सभी डेटा को एक बड़ी सरणी में डाल देगा, जिसकी आप अपेक्षा कर रहे हैं। अब आप वह कर सकते हैं जो आप प्रश्न में करना चाहते थे:
echo $fullData[0].'<br>';
echo $fullData[1].'<br>';
echo $fullData[2].'<br>';
आशा है कि यह मदद करता है।
यहां यह ध्यान देने योग्य है कि mysql_xxx()
कार्यों का परिवार बहिष्कृत और अप्रचलित माना जाता है। यदि आप केवल PHP सीख रहे हैं (जो ऐसा प्रतीत होता है), तो मैं दृढ़ता से अनुशंसा करता हूं कि आप इन कार्यों को सीखना बंद कर दें, और PDO
सीखें। इसके बजाय पुस्तकालय। यह अधिक आधुनिक है और इसमें बहुत सारी विशेषताएं हैं जो mysql
कार्य प्रदान नहीं कर सकते। इसके अलावा, PHP के भविष्य के संस्करण mysql
. को हटा देंगे पूरी तरह से काम करता है, इसलिए आपको किसी बिंदु पर स्विच करना होगा -- यह अभी भी हो सकता है, जबकि आप अभी भी सीख रहे हैं।
साथ ही (प्रश्न के लिए प्रासंगिक चीजों को रखने के लिए), पीडीओ लाइब्रेरी में एक विशेषता है जो वास्तव में वही करती है जो आप एक ही फ़ंक्शन में खोज रहे हैं:PDO::fetchAll()
. इस पद्धति का उपयोग करने का अर्थ है कि आप कर सकते हैं सभी डेटा को एक बड़ी सरणी में एक पंक्ति में लाने के लिए थोड़ी देर लूप करने की आवश्यकता नहीं है। कोड कुछ इस तरह दिखेगा:
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll();
(उदाहरण PDO::fetchAll
के लिए PHP मैन्युअल से लिया गया है
)