PDO 锟结供锟斤拷锟斤拷锟街诧拷同锟侥达拷锟斤拷锟斤拷模式锟斤拷锟斤拷锟斤拷锟姐不同锟斤拷锟斤拷应锟矫匡拷锟斤拷锟斤拷
PDO::ERRMODE_SILENT
锟斤拷为默锟斤拷模式锟斤拷 PDO 锟斤拷只锟津单碉拷锟斤拷锟矫达拷锟斤拷锟诫,锟斤拷使锟斤拷 PDO::errorCode() 锟斤拷 PDO::errorInfo() 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷菘锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷诙锟斤拷锟斤拷锟斤拷锟侥碉拷锟矫讹拷锟斤拷锟斤拷锟侥o拷锟斤拷么锟斤拷锟皆碉拷锟斤拷锟角革拷锟斤拷锟斤拷锟� PDOStatement::errorCode() 锟斤拷 PDOStatement::errorInfo() 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷诘锟斤拷锟斤拷锟斤拷菘锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷模锟斤拷锟矫达拷锟斤拷锟斤拷锟斤拷锟斤拷菘锟斤拷锟斤拷锟较碉拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷
PDO::ERRMODE_WARNING
锟斤拷锟斤拷锟矫达拷锟斤拷锟斤拷之锟解,PDO 锟斤拷锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷统锟斤拷 E_WARNING 锟斤拷息锟斤拷锟斤拷锟街伙拷锟斤拷肟达拷锟斤拷锟斤拷锟斤拷锟绞裁达拷锟斤拷锟斤拷也锟斤拷卸锟接︼拷贸锟斤拷锟斤拷锟斤拷锟教o拷锟斤拷么锟斤拷锟斤拷锟斤拷锟节碉拷锟斤拷/锟斤拷锟斤拷锟节硷拷浅锟斤拷锟斤拷谩锟�
PDO::ERRMODE_EXCEPTION
锟斤拷锟斤拷锟矫达拷锟斤拷锟斤拷之锟解,PDO 锟斤拷锟斤拷锟阶筹拷一锟斤拷 PDOException 锟届常锟洁并锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟酵达拷锟斤拷锟斤拷息锟斤拷锟斤拷锟斤拷锟斤拷锟节碉拷锟斤拷锟节硷拷也锟角筹拷锟斤拷锟矫o拷锟斤拷为锟斤拷锟斤拷锟斤拷效锟截放达拷疟锟斤拷胁锟斤拷锟斤拷锟斤拷锟侥点,锟接讹拷锟斤拷锟皆非筹拷锟斤拷锟劫碉拷指锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟角憋拷锟斤拷锟斤拷颍ḿ锟阶★拷锟斤拷锟斤拷锟届常锟斤拷锟铰脚憋拷锟斤拷止锟斤拷锟斤拷锟斤拷锟斤拷锟皆讹拷锟截癸拷锟斤拷锟斤拷
锟届常模式锟斤拷一锟斤拷锟角筹拷锟斤拷锟矫碉拷锟角o拷锟斤拷却锟酵� PHP 锟斤拷锟侥撅拷锟芥,锟斤拷锟皆革拷锟斤拷锟斤拷锟截癸拷锟斤拷锟皆硷拷锟侥达拷锟斤拷锟斤拷锟斤拷锟揭憋拷锟斤拷默模式锟斤拷锟斤拷式锟截硷拷锟矫匡拷锟斤拷锟斤拷菘锟斤拷锟矫的凤拷锟斤拷值锟斤拷锟届常模式锟斤拷要锟侥达拷锟斤拷/嵌锟阶革拷锟劫★拷
See Exceptions for more information about Exceptions in PHP.
PDO 使锟斤拷 SQL-92 SQLSTATE 锟斤拷锟芥范锟斤拷锟斤拷锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷同 PDO 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟角的憋拷锟截达拷锟斤拷映锟斤拷为锟绞碉拷锟斤拷 SQLSTATE 锟斤拷锟诫。PDO::errorCode() 锟斤拷锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷 SQLSTATE 锟诫。锟斤拷锟斤拷锟揭拷锟斤拷锟剿达拷锟斤拷锟较革拷锟斤拷锟较拷锟絇DO 锟斤拷锟结供锟斤拷一锟斤拷 PDO::errorInfo() 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷锟斤拷 SQLSTATE 锟诫、锟截讹拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟皆硷拷锟斤拷锟斤拷锟斤拷锟侥达拷锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷锟介。
Example #1 锟斤拷锟斤拷 PDO 实锟斤拷锟斤拷锟斤拷锟矫达拷锟斤拷模式
<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try {
$dbh = new PDO($dsn, $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
Note:
锟斤拷锟杰碉拷前锟角凤拷锟斤拷锟斤拷锟斤拷
PDO::ATTR_ERRMODE
锟斤拷锟斤拷锟斤拷锟斤拷锟绞э拷埽锟�PDO::__construct() 锟斤拷锟斤拷锟斤拷锟阶筹拷一锟斤拷 PDOException 锟届常锟斤拷未锟斤拷锟斤拷锟届常锟斤拷锟斤拷锟斤拷锟侥★拷
Example #2 锟斤拷锟斤拷 PDO 实锟斤拷锟斤拷锟节癸拷锟届函锟斤拷锟斤拷锟斤拷锟矫达拷锟斤拷模式
<?php
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'googleguy';
$password = 'googleguy';
/*
使锟斤拷 try/catch 围锟狡癸拷锟届函锟斤拷锟斤拷然锟斤拷效锟斤拷锟斤拷使锟斤拷锟斤拷锟斤拷 ERRMODE 为 WARNING锟斤拷
锟斤拷为锟斤拷锟斤拷锟斤拷锟绞э拷埽锟絇DO::__construct 锟斤拷锟斤拷锟斤拷锟阶筹拷一锟斤拷 PDOException 锟届常锟斤拷
*/
try {
$dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
exit;
}
// 锟斤拷锟斤将锟斤拷锟斤拷 PDO 锟阶筹拷一锟斤拷 E_WARNING 锟斤拷锟斤拷拇锟斤拷螅锟斤拷锟斤拷锟� 一锟斤拷锟届常 锟斤拷锟斤拷锟斤拷锟捷憋拷锟斤拷锟斤拷时锟斤拷
$dbh->query("SELECT wrongcolumn FROM wrongtable");
?>
锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�
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 18