Грешки и ракување со грешки
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Грешки и ракување со грешки
Референца за `pdo.error-handling.php` со подобрена типографија и навигација.
Грешки и ракување со грешки
PDO offers you a choice of 3 different error handling strategies, to fit your style of application development.
-
PDO ви нуди избор од 3 различни стратегии за ракување со грешки, за да одговараат на вашиот стил на развој на апликации. Враќа нумеричка вредност на пораката за грешка од претходната MySQL операција and Пример #1 Преземање на SQLSTATE код Пред PHP 8.0.0, ова беше стандардниот режим. PDO едноставно ќе го постави кодот за грешка за вас да го инспектирате користејќи ги нема да ја одрази таа грешка. Мора да повикате or - Преземи го SQLSTATE поврзан со последната операција на рачката на изјавата методите на објектите на изјавата и базата на податоци; ако грешката произлезе од повик на објект на изјава, би го повикале
-
методот на тој објект. Ако грешката произлезе од повик на објектот на базата на податоци, наместо тоа би ги повикале тие методи на објектот на базата на податоци.
-
Покрај поставувањето на кодот за грешка, PDO ќе емитува традиционална порака E_WARNING. Оваа поставка е корисна за време на отстранување грешки/тестирање, ако само сакате да видите кои проблеми се случиле без да го прекинете текот на апликацијата. PDOException Од PHP 8.0.0, ова е стандардниот режим. Покрај поставувањето на кодот за грешка, PDO ќе фрли
и ќе ги постави неговите својства за да го одрази кодот за грешка и информациите за грешката. Оваа поставка е исто така корисна за време на отстранување грешки, бидејќи ефективно ќе го "разнесе" скриптата во точката на грешката, многу брзо укажувајќи на потенцијалните проблематични области во вашиот код (запомнете: трансакциите автоматски се враќаат ако исклучокот предизвика прекин на скриптата).
Константи за известување за грешки Исклучоци за повеќе информации за Исклучоци во PHP.
Режимот на исклучок е исто така корисен бидејќи можете да го структурирате вашето ракување со грешки појасно отколку со традиционалните PHP-стил предупредувања, и со помалку код/вгнездување отколку со работа во тивок режим и експлицитно проверување на вратената вредност на секој повик на базата на податоци. Враќа нумеричка вредност на пораката за грешка од претходната MySQL операција PDO стандардизира со користење на SQL-92 SQLSTATE кодови за грешки; индивидуалните PDO драјвери се одговорни за мапирање на нивните домашни кодови на соодветните SQLSTATE кодови. Пример #1 Преземање на SQLSTATE код методот враќа единечен SQLSTATE код. Ако ви требаат поспецифични информации за грешка, PDO исто така нуди
метод кој враќа низа што содржи SQLSTATE код, драјвер специфичен код за грешка и драјвер специфична низа за грешка.
<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
$dbh = new PDO($dsn, $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// This will cause PDO to throw a PDOException (when the table doesn't exist)
$dbh->query("SELECT wrongcolumn FROM wrongtable");Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Fatal error: Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'testdb.wrongtable' doesn't exist in /tmp/pdo_test.php:10
Stack trace:
#0 /tmp/pdo_test.php(10): PDO->query('SELECT wrongcol...')
#1 {main}
thrown in /tmp/pdo_test.php on line 10
Забелешка:
Пример #1 Креирајте PDO инстанца и поставете го режимот за грешки PDO::__construct() PDOException секогаш ќе фрли
PDO::ATTR_ERRMODEе моментално поставено.
ако врската не успее без оглед на тоа кој
<?php
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'googleguy';
$password = 'googleguy';
$dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
// This will cause PDO to throw an error of level E_WARNING instead of an exception (when the table doesn't exist)
$dbh->query("SELECT wrongcolumn FROM wrongtable");Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Warning: PDO::query(): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.wrongtable' doesn't exist in /tmp/pdo_test.php on line 9