HI हिन्दी
版本: v2.6.1

त्रुटियाँ और त्रुटि प्रबंधन

PDO तीन त्रुटि प्रबंधन मोड प्रदान करता है जिन्हें आप कनेक्शन पर कॉन्फ़िगर कर सकते हैं। https://www.php.net/manual/en/pdo.error-handling.php. पर और पढ़ें
$database = new Medoo([
	// आवश्यक.
	'type' => 'mysql',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',

	// वैकल्पिक.
	// PDO::ERRMODE_SILENT | PDO::ERRMODE_WARNING | PDO::ERRMODE_EXCEPTION
	'error' => PDO::ERRMODE_SILENT,
]);

PDO::ERRMODE_SILENT

PHP 8.0.0 से पहले, यह डिफ़ॉल्ट मोड था। इस मोड में, PDO चुपचाप त्रुटि कोड सेट करता है। आप $database->error से त्रुटि संदेश और $database->errorInfo से विस्तृत त्रुटि जानकारी पढ़ सकते हैं।
$database = new Medoo([
	// ...
	'error' => PDO::ERRMODE_SILENT
]);

$database->select("bccount", "*");

var_dump($database->error);
var_dump($database->errorInfo);

// string(36) "Table 'master.bccount' doesn't exist"
//
// array(3) {
//   [0]=> string(5) "42S02"
//   [1]=> int(1146)
//   [2]=> string(36) "Table 'master.bccount' doesn't exist"
// }

PDO::ERRMODE_WARNING

PDO एक पारंपरिक E_WARNING संदेश उत्सर्जित करता है। यह विकास के दौरान उपयोगी है क्योंकि निष्पादन जारी रहता है। आप अभी भी $database->error के माध्यम से त्रुटियाँ पढ़ सकते हैं, जैसे PDO::ERRMODE_SILENT में।
$database = new Medoo([
	// ...
	'error' => PDO::ERRMODE_WARNING
]);

$database->select("bccount", "*");

var_dump($database->error);
var_dump($database->errorInfo);

// Warning:  PDOStatement::execute(): SQLSTATE[42S02]: Base table or view not found:
// 1146 Table 'bccount' doesn't exist in /src/Medoo.php on line 10
//
// string(36) "Table 'master.bccount' doesn't exist"
//
// array(3) {
//   [0]=> string(5) "42S02"
//   [1]=> int(1146)
//   [2]=> string(36) "Table 'master.bccount' doesn't exist"
// }

PDO::ERRMODE_EXCEPTION

PHP 8.0.0 से, यह डिफ़ॉल्ट मोड है। PDO एक PDOException फेंकता है और बाद के निष्पादन को रोक देता है, जो आपको विफल कोड पथों को शीघ्रता से पहचानने में मदद करता है।
$database = new Medoo([
	// ...
	'error' => PDO::ERRMODE_EXCEPTION
]);

$database->select("bccount", "*");

// यह पंक्ति निष्पादित नहीं होगी।
var_dump($database->error);

// Fatal error:  Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found
// 1146 Table 'master.bccount' doesn't exist in /src/Medoo.php:10
// Stack trace:
// #0 /src/Medoo.php(564): PDOStatement->execute()
// #1 /src/Medoo.php(1652): Medoo\Medoo->exec(Object(PDOStatement), Array)
// #2 /var/www/playground/index.php(44): Medoo\Medoo->select('bccount', Array, Array)
// #3 {main}
// thrown in /src/Medoo.php line 10
// अपवाद संदेश को संभालने और प्रिंट करने के लिए try-catch का उपयोग करें।
try {
	$database->select("bccount", "*");
} catch (PDOException $e) {
	echo $e->getMessage();
}

// SQLSTATE[42S02]: Base table or view not found: 1146 Table 'master.bccount' doesn't exist

त्रुटि की जाँच हो रही है

PDO::ERRMODE_SILENT और PDO::ERRMODE_WARNING मोड में, $database->error और $database->errorInfo तब null होते हैं जब कोई त्रुटि नहीं होती है। यह निर्धारित करने के लिए कि क्या कोई त्रुटि हुई है, आप null की जांच कर सकते हैं।
$database->select("bccount", "*");

if ($database->error) {
	echo "त्रुटि हुई।";
}

// त्रुटि हुई।
$database->select("account", "*");

if (!$database->error) {
    echo "कोई त्रुटि नहीं।";
}

// कोई त्रुटि नहीं।