我是否需要使用try-and-catch块来显示php的pdo扩展的错误?例如,使用mysql,您通常可以执行以下操作:
if ( ! $query) { die('Oh noes!'); }
aydmsdu91#
pdo默认支持自己的异常类, PDOException .没有理由不能使用:
PDOException
try{ $query = $db->prepare(...); if( !$query ){ throw new Exception('Query Failed'); } } catch(Exception $e){ echo $e->getMessage(); }
我只知道 Exception 是因为 PDOException 是个例外的孩子。抓住父母就会抓住所有的孩子。
Exception
yr9zkbsy2#
您可以通过pdo::attr\u errmode选择pdo处理错误的方式:
$pdo->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); // Raise E_WARNING. $pdo->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); // Sets error codes. // or $pdo->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // throws exception
iyr7buue3#
如果不想使用try-catch语句,仍然可以使用以下代码:
$query = $db->prepare("SELECT * FROM table"); if(!$query->execute()) { print_r($query->errorInfo()); }
xghobddn4#
public static function qry($sql) { try { $statement = $db_handle->prepare($sql); $retval = $statement->execute(); if($statement->rowCount() >= 1) { //do something }else { $errors = $statement->errorInfo(); echo $errors[2] . ", " . $errors[1] . " ," . $errors[0]; } } catch (Exception $e) { echo $e->getMessage(); } }
4条答案
按热度按时间aydmsdu91#
pdo默认支持自己的异常类,
PDOException
.没有理由不能使用:
我只知道
Exception
是因为PDOException
是个例外的孩子。抓住父母就会抓住所有的孩子。yr9zkbsy2#
您可以通过pdo::attr\u errmode选择pdo处理错误的方式:
iyr7buue3#
如果不想使用try-catch语句,仍然可以使用以下代码:
xghobddn4#