Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

mysqli ने स्टेटमेंट तैयार किया num_rows 0 देता है जबकि क्वेरी 0 से अधिक रिटर्न करती है

जब आप mysqli के माध्यम से एक बयान निष्पादित करते हैं, तो परिणाम वास्तव में PHP में नहीं होते हैं जब तक कि आप उन्हें नहीं लाते - परिणाम डीबी इंजन द्वारा आयोजित किए जाते हैं। तो mysqli_stmt ऑब्जेक्ट के पास यह जानने का कोई तरीका नहीं है कि निष्पादन के तुरंत बाद कितने परिणाम हैं।

अपना कोड इस प्रकार संशोधित करें:

$stmt->execute();
$stmt->store_result(); // pull results into PHP memory

// now you can check $stmt->num_rows;

मैन्युअल देखें

यह आपके विशेष उदाहरण पर लागू नहीं होता है, लेकिन यदि आपका परिणाम सेट बड़ा है, तो $stmt->store_result() बहुत सारी मेमोरी का उपभोग करेगा। इस मामले में, यदि आप केवल यह पता लगाना चाहते हैं कि क्या कम से कम एक परिणाम लौटाया गया है, तो परिणामों को संग्रहीत न करें; इसके बजाय, बस जांचें कि क्या परिणाम मेटाडेटा शून्य नहीं है:

$stmt->execute();
$hasResult = $stmt->result_metadata ? true : false;

मैन्युअल देखें



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. गोलांग के साथ JSON पर MySQL टेबल डंप करना

  2. MySQL पर सिम्युलेटिंग लैग फंक्शन

  3. हाइबरनेट 5.0.1 और MySQL को कॉन्फ़िगर करने में त्रुटि

  4. MySQL MyISAM स्टोरेज इंजन पर कैस्केड हटाएं का उपयोग कैसे करें?

  5. jdbc के माध्यम से निष्पादित संग्रहीत कार्यविधियाँ