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

mysqli_connect घातक त्रुटि:आवश्यकता ()

आपके कोड और आपके "समाधान" के साथ दो सबसे बड़ी समस्याएं:

  1. आपके पास @ है हर जगह ऑपरेटर। जिसके लिए आपके पास अपने प्रश्न के लिए -1 वोट है। @ ऑपरेटर है बुराई ही। आपके द्वारा देखे जाने वाले रिक्त पृष्ठ के लिए IT जिम्मेदार है।
  2. हालांकि, आपके द्वारा चुने गए उपाय ने स्थिति को और खराब कर दिया है। यह "या मरो" बात किसी त्रुटि रिपोर्टिंग समस्या को हल करने के लिए कोई जादू मंत्र नहीं है। और अनुचित तरीके से उपयोग किए जाने से त्रुटियां होंगी जैसे आपके पास है। जिसके लिए आपके पास 1 . है त्रुटि संदेश में।

सबसे पहले, आपका समावेश ठीक है, इसलिए, इसे अकेला छोड़ दें।

mysqli से त्रुटि प्राप्त करने के लिए, इन निर्देशों का पालन करें:

बेतरतीब ढंग से "या मरो" जोड़ने के बजाय, आपको अधिक मजबूत और सहायक त्रुटि रिपोर्टिंग समाधान की आवश्यकता है।

यदि आप सभी एप्लिकेशन कोड में mysqli_query() का उपयोग कर रहे हैं, इसे किसी सहायक वर्ग में शामिल किए बिना, trigger_error() PHP त्रुटि को बढ़ाने का एक अच्छा तरीका है, क्योंकि यह आपको फ़ाइल और लाइन नंबर भी बताएगा जहाँ त्रुटि हुई है

$res = mysqli_query($mysqli,$query) or trigger_error(mysqli_error($mysqli)."[$query]");

आपकी सभी लिपियों में
और तब से आपको इसका कारण बताया जाएगा कि वस्तु क्यों नहीं बनाई गई।(यदि आप इस or के बारे में उत्सुक हैं सिंटैक्स, मैंने इसे यहां समझाया है - यह यह भी बताता है कि आपके पास (1) . क्यों है त्रुटि संदेश में)

हालांकि , यदि आप अपनी क्वेरी को किसी वर्ग में इनकैप्सुलेट कर रहे हैं, तो ट्रिगर त्रुटि से फ़ाइल और लाइन काफी बेकार होगी क्योंकि वे कॉल को ही इंगित करेंगे, न कि एप्लिकेशन कोड जो कुछ समस्या का कारण बना। इसलिए, जब mysqli कमांड को इनकैप्सुलेट किया जाता है, तो दूसरे तरीके का इस्तेमाल करना पड़ता है:

$result = $mysqli->query($sql);
if (!$result) {
    throw new Exception($mysqli->error." [$query]");
}

चूंकि अपवाद आपको एक स्टैक ट्रेस . प्रदान करेगा , जो आपको उस स्थान तक ले जाएगा जहां से एक गलत प्रश्न पूछा गया था।

ध्यान दें कि आपको सामान्य रूप से PHP त्रुटियों को देखने में सक्षम होना चाहिए। एक लाइव साइट पर आपको त्रुटि लॉग देखना होता है, इसलिए, सेटिंग्स होनी चाहिए

error_reporting(E_ALL);
ini_set('display_errors',0);
ini_set('log_errors',1);

स्थानीय विकास सर्वर पर रहते हुए स्क्रीन पर त्रुटियां करना ठीक है:

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

और निश्चित रूप से आपको कभी भी अपने बयानों के सामने त्रुटि दमन ऑपरेटर (@) का उपयोग नहीं करना चाहिए।




  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 -v कमांड लाइन त्रुटि (लिनक्स/उबंटू)

  2. mysql.connector पायथन में अंतिम डेटाबेस स्थिति नहीं देता है

  3. Mysql पिछले रिकॉर्ड से एक मान के साथ एक रिकॉर्ड अपडेट कर रहा है

  4. php . के साथ mysql दिनांक भंडारण और क्वेरी प्रदर्शन

  5. कक्षा द्वारा mysql अद्यतन तालिका अजाक्स