php - विभिन्न वातावरण में MySQLi त्रुटि जानकारी कैसे प्राप्त करें



prepared-statement environment (1)

सबसे पहले, 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 बेहतर तरीके से बेहतर कर सकता है।

मेरे स्थानीय / विकास पर्यावरण में, 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 के माध्यम से क्वेरी निष्पादित करने का प्रयास किया और परिणाम ठीक है।





error-reporting