php PDO例外処理の詳しい説明

高洛峰
リリース: 2023-03-03 13:22:01
オリジナル
1595 人が閲覧しました

例外処理:

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,&#39;jike&#39;,&#39;w&#39;,55)";
$res = $pdo->exec($sql);
if($res){
  echo "OK";
}else{
  echo $pdo->errorCode();
  print_r($pdo->errorInfo());
}
ログイン後にコピー


方法 2:

<?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,&#39;jike&#39;,&#39;w&#39;,55)";
//若有错误直接在浏览器页面中显示错误信息
$res = $pdo->exec($sql);
ログイン後にコピー

方法 3:

<?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,&#39;jike&#39;,&#39;w&#39;,55)";
//用try{}catch(){}抓取异常
try{
  $res = $pdo->exec($sql);
}catch(PDOException $e){
  echo $e->getMessage();
}
ログイン後にコピー

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート