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

MYSQLI तैयार कथन कोई आउटपुट प्राप्त नहीं करता है

आपकी प्रारंभिक समस्या यह है कि आप हर की जांच नहीं कर रहे थे विफलता के लिए कॉल करें, शुरुआत में बस कुछ ही। दोनों store_result और bind_result विफल भी हो सकता है।

आपकी विशिष्ट समस्या (एक बार जब आप प्रारंभिक समस्या को ठीक कर लेते हैं) यह है कि आप select * कर रहे हैं एकाधिक प्राप्त करने के लिए कॉलम लेकिन आप केवल एक को बाध्य कर रहे हैं परिणाम में। यह आपको bind_result . से प्राप्त त्रुटि संदेश से स्पष्ट होता है कॉल करें:

अगर आप select . बदलते हैं तो कुछ इस तरह के बयान select id from ... , आप पाएंगे कि यह काम करना शुरू कर देता है।

हालांकि, यह मानते हुए कि आप चाहते हैं अधिक कॉलम, आपको बाइंडिंग में अधिक चर प्रदान करना चाहिए, कुछ इस तरह:

$stmt = $db->prepare("SELECT col1, col2 FROM messages WHERE post_id = ?");
:
$ex = $stmt->bind_result($param1, $param2);

आप देखेंगे कि मैं select * का उपयोग नहीं कर रहा हूं ऊपर, लगभग सभी स्थितियों में स्पष्ट कॉलम नामकरण का उपयोग करना बेहतर है ताकि:

  • जब डीबी स्कीमा बदलता है तो आपको आश्चर्य नहीं होता;
  • आपको केवल वही डेटा मिलता है जिसकी आपको आवश्यकता है;
  • आप परिणाम चर के लिए कॉलम को ठीक से मैप कर सकते हैं।

लगभग केवल जगह मैंने कभी पाया है select * . का उपयोग करना ठीक है DB विश्लेषण उपकरण में है जहाँ आप सब कुछ प्राप्त करना चाहते हैं। यदि आप पहले से जानते हैं कि आप क्या चाहते हैं, तो आपको यही पूछना चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे संग्रहीत प्रक्रियाओं का उपयोग कर mysql से मेल भेजने के लिए?

  2. वर्तमान पासवर्ड ज्ञात नहीं होने पर MySQL रूट पासवर्ड रीसेट करना

  3. कॉलम डेटाटाइप और पंक्तियों की संख्या से MySQL तालिका द्वारा उपयोग किए जाने वाले डिस्कस्पेस की गणना कैसे करें?

  4. MySQL में एक संचयी योग कॉलम बनाएं

  5. 134217728 बाइट्स की अनुमत स्मृति आकार समाप्त हो गया (42 बाइट्स आवंटित करने का प्रयास किया गया)