/ / विभिन्न वातावरण में MySQLi त्रुटि जानकारी कैसे प्राप्त करें - php, mysqli, तैयार-कथन, पर्यावरण, त्रुटि-रिपोर्टिंग

विभिन्न वातावरण में MySQLi त्रुटि जानकारी कैसे प्राप्त करें - php, mysqli, तैयार-कथन, पर्यावरण, त्रुटि-रिपोर्टिंग

मेरे स्थानीय / विकास पर्यावरण में, MySQLi क्वेरी ठीक प्रदर्शन कर रही है। हालांकि, जब मैं इसे अपने वेब होस्ट वातावरण पर अपलोड करता हूं, तो मुझे यह त्रुटि मिलती है:

घातक त्रुटि: एक गैर-ऑब्जेक्ट पर किसी सदस्य फ़ंक्शन bind_param () पर कॉल करें ...

यहां कोड है:

global $mysqli;
$stmt = $mysqli->prepare("SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?");
$stmt->bind_param("i", $cur_id);
$stmt->execute();
$stmt->bind_result($uid, $desc);

मेरी क्वेरी को देखने के लिए, मैंने कंट्रोल पैनल phpMyAdmin के माध्यम से क्वेरी निष्पादित करने का प्रयास किया और परिणाम ठीक है।

उत्तर:

उत्तर № 1 के लिए 63

सबसे पहले, MySQLi कनेक्ट होने से पहले हमेशा इस पंक्ति को रखें सब आपके वातावरण:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

उसके बाद सभी MySQL त्रुटियों को स्थानांतरित कर दिया जाएगाPHP अपवादों में। बदले में अपवाद अपवाद, एक PHP घातक त्रुटि बनाता है। इस प्रकार, एक MySQL त्रुटि के मामले में, आपको एक पारंपरिक PHP त्रुटि मिल जाएगी। यह आपको तुरंत त्रुटि कारण से अवगत कराएगा। एक स्टैक ट्रेस आपको सटीक स्थान पर ले जाएगा जहां त्रुटि हुई थी।

ध्यान दें कि आपको देखने में सक्षम होना चाहिए सामान्य रूप से PHP त्रुटियों। और यहां वास्तव में विभिन्न वातावरणों का मामला चला जाता है:

  • एक लाइव साइट पर आपको त्रुटि लॉग में देखना होगा, इसलिए सेटिंग्स को होना चाहिए

    error_reporting(E_ALL);
    ini_set("display_errors", 0);
    ini_set("log_errors", 1);
    
  • स्थानीय विकास सर्वर पर रहते हुए स्क्रीन पर त्रुटियां ठीक होती हैं:

    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    

और आप की एक छोटी सूची क्या है नहीं चाहिए:

  • त्रुटि दमन ऑपरेटर का उपयोग करें (@)
  • उपयोग die() या echo या बिना किसी शर्त के स्क्रीन पर त्रुटि संदेश मुद्रित करने के लिए कोई अन्य फ़ंक्शन। PHP इसे पहले से ही सही कर सकता है, कोई सहायता आवश्यक नहीं है।
  • मैन्युअल रूप से क्वेरी परिणाम का परीक्षण (जैसे if($result)) बस कोई मतलब नहीं है। या तो आपकी क्वेरी विफल हो गई है और आपको पहले से ही त्रुटि अपवाद मिलेगा, या यह ठीक था और परीक्षण करने के लिए कुछ भी नहीं है।
  • त्रुटि संदेश गूंजने के लिए try..catch का उपयोग करें। फिर PHP बेहतर तरीके से बेहतर कर सकता है।