سلام کاربران عزیز ، حال شما خوبه ؟ امیدوارم که شاد باشید و با مطالب امروز ماهمراه باشید امروز میخوام در مورد حالت خطای mode attributes بیاموزیم لطفا با ما همراه باشید.

 

PDO::ERRMODE

این ویژگی حالت گزارش خطا را کنترل می کند و سه مقدار می تواند داشته باشد.

PDO::ERRMODE_SILENT

PDO::ERRMODE_WARNING

PDO:ERRMODE_EXCEPTION

PDO::ERRMODE_SILENT

هنگامی که خطایی رخ می دهد، کد خطا را می توان با PDO::errorCode() یا PDO::errorInfo()  بدست آورد. این مقدار پیش فرض برای PDO::ERRMODE است.

<?php‎

‎‎ ‎// configuration‎

‎‎ ‎$dbtype     = “sqlite”;‎

‎ ‎$dbhost     = ‎‎”localhost”;‎

‎‎ ‎$dbname     = ‎‎”test”;‎

‎‎ ‎$dbuser     = ‎‎”root”;‎

‎‎ ‎$dbpass     = ‎‎”admin”;‎

‎‎‎‎   ‎// database connection‎

‎‎ ‎$conn = ‎new PDO(“mysql:host=$dbhost;dbname=$dbname“,$dbuser,$dbpass);‎

‎‎ ‎// query‎

‎ ‎

‎‎ ‎$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);‎

‎‎ ‎$sql = “SELECT * FROM booksa”;‎

‎‎ ‎$q = $conn->query($sql) or die(“ERROR: ” . implode(“:”, $conn-‎‎>errorInfo()));‎

‎‎ ‎$r = $q->fetch(PDO::FETCH_ASSOC);‎

‎‎‎   print_r($r);‎

‎‎ ‎//result:‎

‎‎ ‎//ERROR: 42S02:1146:Table ‘test.booksa’ doesn’t exist‎

‎‎ ‎?> 

 

PDO::ERRMODE_WARNING

هیچ کاری انجام نمی شود ولی خطایی با درجه E_Warning صادر می شود.

‎‎‎‎               ‎// query‎
‎‎ ‎$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);‎
‎‎ ‎$sql = “SELECT * FROM booksa”;‎
‎‎ ‎$q = $conn->query($sql) or die(“ERROR: ” . implode(“:”, $conn-‎‎>errorInfo()));‎
‎  ‎$r = $q->fetch(PDO::FETCH_ASSOC);‎
‎‎ print_r($r);‎
‎‎‎    ‎//result:‎
‎‎ ‎//Warning: PDO::query() [function.PDO-query]: SQLSTATE[42S02]: Base ‎table or view ‎not found: 1146 Table ‘test.booksa’ doesn’t exist in
‎‎ ‎//C:\AppServ5\www\test\pdo\test.php on line 15‎
‎  ‎//ERROR: 42S02:1146:Table ‘test.booksa’ doesn’t exist

 

PDO::ERRMODE_EXCEPTION

کد های خطا را قرار می دهد (مانند PDO::ERRMODE_SILENT) و یک exception از کلاس PDOException صادر می شود.

‎‎               ‎// query‎
‎‎ ‎$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);‎
‎‎ ‎$sql = “SELECT * FROM booksa”;‎
‎‎ ‎$q = $conn->query($sql) or die(“ERROR: ” . implode(“:”, $conn-‎‎>errorInfo()));‎
‎‎‎    ‎$r = $q->fetch(PDO::FETCH_ASSOC);‎
‎‎print_r($r);‎
‎ ‎‎‎  ‎//result:‎
‎ ‎‎   ‎//Fatal error: Uncaught exception ‘PDOException’ with message ‎‎’SQLSTATE[42S02]: ‎Base table or view not found: 1146 Table ‎‎’test.booksa’ doesn’t exist’ in‎
‎‎ ‎//C:\AppServ5\www\test\pdo\test.php:15 Stack trace: ‎‎#۰ ‎C:\AppServ5\www\test\pdo\test.php(15): PDO->query(‘SELECT * FROM b…’) ‎‎#۱ {main} ‎thrown in‎
‎‎ ‎//C:\AppServ5\www\test\pdo\test.php on line 15