mysql-pdo模式_mysql-phppdo缺省错误模式和例外模式,差不多,为什么弄两个?

先说 缺省模式

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

我做的实验中,出错后,会给 $pdo->errorCode() 和 $pdo->errorInfo() 赋值;通过调用他们可以可以 看 错误的详细信息;

然后说例外模式

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

try{

}catch(PDOException $e){

echo "执行命令失败:".$e->getMessage();

exit;

}

会实例出一个 $e 对象,错误信息保存在这个属性里.

都是有错误信息,为什么要分两个属性?

回复内容:

先说 缺省模式

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

我做的实验中,出错后,会给 $pdo->errorCode() 和 $pdo->errorInfo() 赋值;通过调用他们可以可以 看 错误的详细信息;

然后说例外模式

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

try{

}catch(PDOException $e){

echo "执行命令失败:".$e->getMessage();

exit;

}

会实例出一个 $e 对象,错误信息保存在这个属性里.

都是有错误信息,为什么要分两个属性?

/*错误模式说明:

◆异常模式:

$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了.

◆缺省模式:

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

这个出错,会给 $pdo->errorCode() 和 $pdo->errorInfo()[2] 赋值;

可以用

if($pdo->errorInfo()[2])

if($pdo->errorCode())

判断脚本是不是出错.

如果不出错,上面都是空的;

◆警告模式:

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

这个会echo出一个错误信息,打乱了脚本;

学习调试的时候使用比较好;

真用起来的时候,很多时候判断不出到底脚本有没有出错;

*/

你太纠结了...这是为了方便使用者,为啥一定要有个为什么。就像是有些API通过参数可以选择返回json还是xml,有什么特别的意义吗?也是为了方便而已。

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值