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

PDO::ERRMODE_SILENT

PDO::ERRMODE_WARNING

PDO:ERRMODE_EXCEPTION

PDO::ERRMODE_SILENT

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

‎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‎