पीडीओ स्पष्ट रूप से किसी चयनित क्वेरी से लौटाई गई पंक्तियों की संख्या को गिनने का कोई मतलब नहीं है (mysqli
में num_rows
चर) है।PHP पीडीओ - न्यू पंक्तियां
क्या ऐसा करने का कोई तरीका है, count($results->fetchAll())
का उपयोग करने से कम?
पीडीओ स्पष्ट रूप से किसी चयनित क्वेरी से लौटाई गई पंक्तियों की संख्या को गिनने का कोई मतलब नहीं है (mysqli
में num_rows
चर) है।PHP पीडीओ - न्यू पंक्तियां
क्या ऐसा करने का कोई तरीका है, count($results->fetchAll())
का उपयोग करने से कम?
मैनुअल के अनुसार, PDOStatement->rowCount
विधि है; लेकिन यह (के हवाले से) नहीं किया जाना चाहिए:
सबसे डेटाबेस के लिए,
PDOStatement::rowCount()
नहीं वापसी एकSELECT
बयान से प्रभावित पंक्तियों की संख्या है।
इसके बजाय,PDO::query()
अपने इच्छितSELECT
बयान के रूप में एक ही विधेय के साथ एकSELECT COUNT(*)
बयान जारी करने के लिए उपयोग करते हैं, तो पंक्तियों को वापस कर दी जाएगा की संख्या को पुनः प्राप्तPDOStatement::fetchColumn()
का उपयोग करें।
आपका आवेदन सही कार्रवाई कर सकता है।
आप पहले से ही एक recordset है, और पता है कि कैसे कई लाइनों उस में कर रहे हैं चाहते हैं, आप डेटा प्राप्त करने का, fetch*
एक विधि का उपयोग होगा; और गिनती का उपयोग करें - जैसा कि आपने सुझाव दिया था।
हाँ, इस प्रकार मेरी समस्या। यह कैसे संभव है कि पीडीओ * के पास num_rows फ़ंक्शन नहीं है? हर दूसरे डीबी कनेक्टर lib वहाँ वहाँ है। – Ian
यदि आपके पास डेटा है, तो आप अपनी लाइनों की संख्या को गिन सकते हैं * (जैसे आपने सुझाव दिया) *; इसलिए मुझे लगता है कि ऐसी विधि के लिए कोई वास्तविक * आवश्यकता नहीं है जो ... –
गिनती के लिए सिर्फ सभी डेटा को पकड़ना, फिर उस सरणी को फेंकना बहुत अपमानजनक है, खासकर यदि यह एक बड़ी सरणी है .. – Ian
एक और विकल्प num_rows
mysqli
में परिवर्तनीय और संबंधित सी एपीआई फ़ंक्शन mysql_num_rows()
में भिन्न हो सकता है। MySQL फ़ंक्शन FOUND_ROWS()
का उपयोग करना है जो परिणाम में सभी रिकॉर्ड्स को गिनने के बिना समान जानकारी देता है।
उदाहरण:
$pdoDB->query('SELECT FOUND_ROWS()')->fetchColumn()
इस उत्तर को आजकल कोई समझ नहीं आता है क्योंकि आप नियमित रूप से गिनती कर सकते हैं –
हालांकि पीडीओ जाहिरा तौर पर पंक्तियों की संख्या mysql के लिए एक का चयन क्वेरी से लौटे गिनती करने के लिए हर तरह की है, क्या अधिक महत्वपूर्ण है है कि वहाँ में इस तरह के एक समारोह के लिए कोई फायदा नहीं है प्रथम स्थान।
प्रत्येक बार जब आप SELECT क्वेरी के लिए rowCount() का उपयोग करने का विचार रखते हैं, तो यह या तो अधूरा या हानिकारक होगा। PDO rowCount() देखें:
क्या आपने इस प्रश्न के स्वीकृत उत्तर को भी पढ़ा था? पीडीओ के दस्तावेज़ीकरण से: "यदि संबंधित पीडीओएसेटेटमेंट द्वारा निष्पादित अंतिम SQL कथन एक SELECT कथन था, तो कुछ डेटाबेस उस कथन द्वारा लौटाई गई पंक्तियों की संख्या वापस कर सकते हैं। हालांकि, इस व्यवहार को सभी डेटाबेस के लिए गारंटी नहीं है और इसके लिए भरोसा नहीं किया जाना चाहिए पोर्टेबल अनुप्रयोगों। " – Ian
ठीक है अगर आप पोर्टेबल एप्लिकेशन के लिए पूछ रहे हैं, तो अपने प्रश्न को mysql के साथ टैग न करें। –
मुझे गिनने के बारे में कैसे जाना चाहिए? मैं डेटाबेस से डेटा प्रदर्शित करने के लिए बाद में HTML दस्तावेज़ में एक PHP MySQL क्वेरी का उपयोग कर रहा हूं, लेकिन जिस तत्व में मैं गिनती प्रदर्शित करना चाहता हूं वह डेटा लाने और डेटा प्रदर्शित करने से पहले आता है ??? – Anthony
http://stackoverflow.com/questions/460010/work-around-for-php5s-pdo-rowcount-mysql-issue का संभावित डुप्लिकेट - यह प्रश्न आपके जैसा ही है। स्वीकार्य उत्तर वही है जो आप चाहते हैं। – zombat
मैंने उस सवाल को देखा, लेकिन जवाब बेकार है। डीबी को दूसरी क्वेरी चलाने के लिए बस रिकॉर्ड्स सेट में संग्रहीत पंक्तियों की संख्या को देखने के लिए वास्तव में गूंगा है। – Ian