डाटाबेस की पंक्तियों के लिए आपको गिनती देने का एकमात्र तरीका क्वेरी चलाने और पंक्तियों की संख्या की गणना करना है।
MySQL एक्सटेंशन डिफ़ॉल्ट रूप से एक buffered क्वेरी मोड का उपयोग करता है जो पूरे डेटासेट को PHP में नियंत्रण से पहले स्मृति में लाया जाता है और यह पंक्तियों को संसाधित करना शुरू कर सकता है।
पीडीओ डिफ़ॉल्ट रूप से एक unbuffered मोड का उपयोग करता है जो पेज लोड समय में कम विलंबता का कारण बनता है और आम तौर पर आप जो चाहते हैं। व्यापार बंद यह है कि rowCount() संपूर्ण डेटासेट प्राप्त होने तक वैध जानकारी वापस नहीं करेगा।
तो आप उस गिनती को कैसे प्राप्त करते हैं?
आसान:
$q = $db->query("SELECT ...");
$rows = $q->fetchAll();
$rowCount = count($rows);
echo "There are $rowCount rows\n";
foreach ($rows as $row) {
print_r($row);
}
लेकिन वह बेकार है क्योंकि यह सभी पंक्तियों प्रश्नों सामने और बनाता है मेरे पृष्ठ लोड धीमी, पुराने mysql विस्तार इस समस्या नहीं था !?
लेकिन यह वही है जो पुराने mysql एक्सटेंशन वास्तव में कवर के तहत कर रहा है; यह गिनती पाने का यही एकमात्र तरीका है।
स्रोत
2009-08-22 01:28:14
मुझे यकीन नहीं है कि आप क्या खोज रहे हैं, आप प्रभावित_रो() को कॉल कर रहे हैं और एक चयन कथन के लिए शून्य वापस ले रहे हैं? एक चयन किसी भी पंक्ति को प्रभावित नहीं करता है। –
मैं पिछले वर्ष में mysql_num_rows() –
के पीडीओ समकक्ष की तलाश में हूं, आपने कैसे हल किया? – Strae