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

MySQLi ने स्टेटमेंट एरर रिपोर्टिंग तैयार की

mysqli की प्रत्येक विधि विफल हो सकती है। आपको प्रत्येक वापसी मूल्य का परीक्षण करना चाहिए। यदि कोई विफल हो जाता है, तो इस बारे में सोचें कि क्या किसी ऐसी वस्तु के साथ जारी रखना समझ में आता है जो उस स्थिति में नहीं है जिसकी आप अपेक्षा करते हैं। (संभावित रूप से "सुरक्षित" स्थिति में नहीं है, लेकिन मुझे लगता है कि यहां कोई समस्या नहीं है।)

चूंकि प्रति कनेक्शन/कथन केवल अंतिम ऑपरेशन के लिए त्रुटि संदेश संग्रहीत किया जाता है, इसलिए आप क्या के बारे में जानकारी खो सकते हैं यदि आप कुछ गलत होने के बाद भी जारी रखते हैं तो त्रुटि उत्पन्न हुई। आप उस जानकारी का उपयोग स्क्रिप्ट को यह तय करने के लिए कर सकते हैं कि क्या फिर से प्रयास करना है (केवल एक अस्थायी समस्या), कुछ बदलें या पूरी तरह से जमानत दें (और एक बग की रिपोर्ट करें)। और यह डिबगिंग को बहुत आसान बनाता है।

$stmt = $mysqli->prepare("INSERT INTO testtable VALUES (?,?,?)");
// prepare() can fail because of syntax errors, missing privileges, ....
if ( false===$stmt ) {
  // and since all the following operations need a valid/ready statement object
  // it doesn't make sense to go on
  // you might want to use a more sophisticated mechanism than die()
  // but's it's only an example
  die('prepare() failed: ' . htmlspecialchars($mysqli->error));
}

$rc = $stmt->bind_param('iii', $x, $y, $z);
// bind_param() can fail because the number of parameter doesn't match the placeholders in the statement
// or there's a type conflict(?), or ....
if ( false===$rc ) {
  // again execute() is useless if you can't bind the parameters. Bail out somehow.
  die('bind_param() failed: ' . htmlspecialchars($stmt->error));
}

$rc = $stmt->execute();
// execute() can fail for various reasons. And may it be as stupid as someone tripping over the network cable
// 2006 "server gone away" is always an option
if ( false===$rc ) {
  die('execute() failed: ' . htmlspecialchars($stmt->error));
}

$stmt->close();

छह साल बाद बस कुछ नोट...

mysqli एक्सटेंशन उन ऑपरेशनों की रिपोर्ट करने में पूरी तरह से सक्षम है जिसके परिणामस्वरूप अपवादों के माध्यम से 0 के अलावा एक (mysqli) त्रुटि कोड होता है, देखें mysqli_driver::$report_mode .
die() वास्तव में, वास्तव में कच्चा है और मैं अब इस तरह के उदाहरणों के लिए भी इसका उपयोग नहीं करूंगा।
तो कृपया, केवल इस तथ्य को हटा दें कि प्रत्येक और प्रत्येक (mysql) ऑपरेशन कर सकते हैं कई कारणों से विफल; यहां तक ​​कि अगर ठीक यही बात एक हजार बार पहले भी अच्छी हुई थी....



  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. दो तिथियों के बीच की तिथियों की सूची प्राप्त करें

  3. MySQL प्रतिकृति का उपयोग करके लाइव माइग्रेशन

  4. कॉन्फ़िगरेशन सिस्टम प्रारंभ करने में विफल

  5. MySQL में OUTPUT क्लॉज