php获取上一次sql,PHP 获取跟上一次语句句柄操作相关的 SQLSTATE

dbeecher at tekops dot com (2008-08-21 14:50:34)

Neither this property nor the PDOStatement::errorInfo() properties are available if you create your own exception handler.

I am using PHP 5.2.4, PDO_INFORMIX 1.2.0.

Making this call at any point in the program after setting your own exception handler produces an error:

PHP Notice: Undefined property: PDOStatement::$errorCode in new_query.php on line

or

PHP Notice: Undefined property: PDOStatement::$errorInfo in new_query.php on line

But if I set the PDO to SILENT, only set error codes with:

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)

Then process with if/else the call to this functions works fine. The examples below only do error checking to show the result codes of this function. Normally you would want more.

FAILS:

$dbh = new PDO("informix...")

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

try {

$result = $dbh->query("asdfkjasdfkjasdfjk"); /* obvious sql error */

if ($result) print "success!";

}

catch

{

$myeCode = $dbh->errorCode();

/* do stuff with error */

};

$dbh=0;

The error handler gets called but knows nothing about $dbh->errorCode or $dbh->errorInfo.

WORKS:

$dbh = new PDO("informix...")

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

$result = $dbh->query("asdfkjasdfkjasdfjk"); /* obvious sql error */

if ($result)

{

/* process result */

print "success!";

/* all done, didn't make any changes */

$dbh->rollback();

}

else

{

$myeCode = $dbh->errorCode();

print_r($myeCode);

};

$dbh=0; /* close connection */

I hope this helps someone else.

Cheers,

David

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值