किसी भी समय आप ...
"चेतावनी: mysqli_fetch_object () पैरामीटर 1 को mysqli_result होने की उम्मीद है, बूल दी गई है"
... यह संभावना है क्योंकि आपकी क्वेरी के साथ कोई समस्या है। prepare()
या query()
हो सकता है वापसी FALSE
(एक बूलियन), लेकिन यह सामान्य विफलता संदेश सुराग के रास्ते में ज्यादा आप नहीं छोड़ता। आपको कैसे पता चलेगा कि आपकी क्वेरी में क्या गलत है? तुम पूछते हो !
सबसे पहले, सुनिश्चित करें कि त्रुटि रिपोर्टिंग चालू है और दिखाई दे रही है: अपनी फ़ाइल खोलने के ठीक बाद इन दो पंक्तियों को अपनी फ़ाइल के शीर्ष पर जोड़ें <?php
:
error_reporting(E_ALL);
ini_set('display_errors', 1);
यदि आपकी त्रुटि रिपोर्टिंग php.ini में सेट की गई है, तो आपको इसके बारे में चिंता करने की आवश्यकता नहीं होगी। बस सुनिश्चित करें कि आप त्रुटियों को इनायत से संभालते हैं और कभी भी अपने उपयोगकर्ताओं के लिए किसी भी समस्या का सही कारण नहीं बताते हैं। जनता को सही कारण बताना आपकी साइट और सर्वर को नुकसान पहुंचाने वालों के लिए एक सोने का उत्कीर्ण निमंत्रण हो सकता है। यदि आप ब्राउज़र में त्रुटियां नहीं भेजना चाहते हैं तो आप हमेशा अपने वेब सर्वर त्रुटि लॉग की निगरानी कर सकते हैं। लॉग लोकेशन सर्वर से सर्वर पर अलग-अलग होंगे, उदाहरण के लिए, उबंटू पर त्रुटि लॉग आमतौर पर स्थित होता है /var/log/apache2/error.log
। यदि आप लिनक्स वातावरण में त्रुटि लॉग की जांच कर रहे हैं तो आप उपयोग कर सकते हैंtail -f /path/to/log
त्रुटियों को देखने के लिए कंसोल विंडो में हैं क्योंकि वे वास्तविक समय में होते हैं .... या जैसा कि आप उन्हें देखते हैं।
एक बार जब आप मानक त्रुटि रिपोर्टिंग पर चुक जाते हैं, तो आपके डेटाबेस कनेक्शन और एरर जाँच पर एरर जाँचने से आपको होने वाली समस्याओं के बारे में और अधिक जानकारी मिल जाएगी। इस उदाहरण पर एक नज़र डालें जहां कॉलम नाम गलत है। सबसे पहले, कोड जो सामान्य घातक त्रुटि संदेश लौटाता है:
$sql = "SELECT `foo` FROM `weird_words` WHERE `definition` = ?";
$query = $mysqli->prepare($sql)); // assuming $mysqli is the connection
$query->bind_param('s', $definition);
$query->execute();
त्रुटि सामान्य है और जो कुछ भी चल रहा है उसे सुलझाने में आपके लिए बहुत उपयोगी नहीं है।
कोड की अधिक पंक्तियों के एक जोड़े के साथ आप बहुत विस्तृत जानकारी प्राप्त कर सकते हैं जिसका उपयोग आप समस्या को तुरंत हल करने के लिए कर सकते हैं । prepare()
सत्यता के लिए कथन की जाँच करें और यदि यह अच्छा है तो आप बाध्यकारी और निष्पादित करने के लिए आगे बढ़ सकते हैं।
$sql = "SELECT `foo` FROM `weird_words` WHERE `definition` = ?";
if($query = $mysqli->prepare($sql)) { // assuming $mysqli is the connection
$query->bind_param('s', $definition);
$query->execute();
// any additional code you need would go here.
} else {
$error = $mysqli->errno . ' ' . $mysqli->error; // 1054 Unknown column 'foo' in 'field list'
// handle error
}
यदि कुछ गलत है, तो आप एक त्रुटि संदेश भेज सकते हैं जो आपको सीधे मुद्दे पर ले जाता है। इस मामले में, वहाँ कोई नहीं हैfoo
में, तालिका में स्तंभ , समस्या को हल करना तुच्छ है।
यदि आप चुनते हैं, तो आप इस चेकिंग को किसी फ़ंक्शन या क्लास में शामिल कर सकते हैं और पहले बताए अनुसार त्रुटियों को बेहतर तरीके से संभाल कर इसे बढ़ा सकते हैं।