例外処理:
PHP: デフォルトはエラーを直接報告する
MYSQL: デフォルトはサイレントモード エラーが発生するとエラーが直接報告されるため、エラー処理が非常に面倒になります。その後、エラーが発生した場合、エラー情報は直接出力されなくなり、クラス オブジェクト (PDOException) に配置されます。
pdo 例外処理設定:
次の 3 つの値を持つ PDO::ATTR_ERRMODE を設定します。
PDO ::ERRMODE_SILENT: デフォルト モードではエラーが積極的に報告されません。$pdo->errorInfo() の形式でエラー情報を積極的に取得する必要があります。 PDO::ERRMODE_WARNING: E_WARNING エラーを発生させ、積極的にエラーを報告します。 PDO::ERRMODE_EXCEPTION: エラー情報を出力するには、try{}cath(){} を使用する必要があります。 例:方法 1:
<?php //默认是不提示的 需要用 errorCode() errorInfo(); try{ $pdo = new PDO("mysql:host=localhost;dbname=jikexueyuan","root",""); //下面这句是默认设置,有无均可 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_SILENT); }catch(PDOException $e){ die("数据库连接失败".$e->getMessage()); } $sql = "insert into stuu values(null,'jike','w',55)"; $res = $pdo->exec($sql); if($res){ echo "OK"; }else{ echo $pdo->errorCode(); print_r($pdo->errorInfo()); }
<?php try{ $pdo = new PDO("mysql:host=localhost;dbname=jikexueyuan","root",""); //主动以警告的形式报错 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING); }catch(PDOException $e){ die("数据库连接失败".$e->getMessage()); } $sql = "insert into stuu values(null,'jike','w',55)"; //若有错误直接在浏览器页面中显示错误信息 $res = $pdo->exec($sql);
<?php try{ $pdo = new PDO("mysql:host=localhost;dbname=jikexueyuan","root",""); //主动抛出异常 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION ); }catch(PDOException $e){ die("数据库连接失败".$e->getMessage()); } $sql = "insert into stuu values(null,'jike','w',55)"; //用try{}catch(){}抓取异常 try{ $res = $pdo->exec($sql); }catch(PDOException $e){ echo $e->getMessage(); }