目次
mysql - php pdo 缺省错误模式 和 例外模式,差不多,为什么弄两个?
Jun 06, 2016 pm 08:07 PM
mysql
pdo
php
sql
先说 缺省模式
<code>$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);</code>
ログイン後にコピー
ログイン後にコピー
我做的实验中,出错后,会给 $pdo->errorCode() 和 $pdo->errorInfo() 赋值;通过调用他们可以可以 看 错误的详细信息;
然后说例外模式
<code>$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); try{ }catch(PDOException $e){ echo "执行命令失败:".$e->getMessage(); exit; }</code>
ログイン後にコピー
ログイン後にコピー
会实例出一个 $e 对象,错误信息保存在这个属性里.
都是有错误信息,为什么要分两个属性?
回复内容:
先说 缺省模式
<code>$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);</code>
ログイン後にコピー
ログイン後にコピー
我做的实验中,出错后,会给 $pdo->errorCode() 和 $pdo->errorInfo() 赋值;通过调用他们可以可以 看 错误的详细信息;
然后说例外模式
<code>$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); try{ }catch(PDOException $e){ echo "执行命令失败:".$e->getMessage(); exit; }</code>
ログイン後にコピー
ログイン後にコピー
会实例出一个 $e 对象,错误信息保存在这个属性里.
都是有错误信息,为什么要分两个属性?
/*错误模式说明:
<code> ◆异常模式: $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 这个模式需要配合 try 使用 : 一旦出错,就会: 1.创建一个对象,$e 也可以随便命名,从 $e->getMessage() 获取错误信息; 2.采取动作; try{ 要执行的命令... }catch(PDOException $e){ echo "执行命令失败:".$e->getMessage(); 失败后的动作... } 这个其实等于 ◆缺省模式的 if($pdo->errorInfo()[2]) ... 创建PDO的时候,为什么也用 try? 因为这时候连PDO对象都没有,所以也不能设置错误模式,所以可以用try, 一旦PDO创建成功,错误模式就成了 ◆缺省模式, 也就不能用try了. </code>
ログイン後にコピー
<code>◆缺省模式: $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); 这个出错,会给 $pdo->errorCode() 和 $pdo->errorInfo()[2] 赋值; 可以用 if($pdo->errorInfo()[2]) if($pdo->errorCode()) 判断脚本是不是出错. 如果不出错,上面都是空的; </code>
ログイン後にコピー
<code>◆警告模式: $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 这个会echo出一个错误信息,打乱了脚本; 学习调试的时候使用比较好; 真用起来的时候,很多时候判断不出到底脚本有没有出错; </code>
ログイン後にコピー
*/
你太纠结了...这是为了方便使用者,为啥一定要有个为什么。就像是有些API通过参数可以选择返回json还是xml,有什么特别的意义吗?也是为了方便而已。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7287
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1342
46


Laravel チュートリアル
1259
25


PHP チュートリアル
1206
29



Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法
