pdo:显示错误

pgky5nke  于 2021-06-17  发布在  Mysql
关注(0)|答案(4)|浏览(348)

我是否需要使用try-and-catch块来显示php的pdo扩展的错误?
例如,使用mysql,您通常可以执行以下操作:

if ( ! $query)
{
    die('Oh noes!');
}
aydmsdu9

aydmsdu91#

pdo默认支持自己的异常类, PDOException .
没有理由不能使用:

try{
    $query = $db->prepare(...);
    if( !$query ){
        throw new Exception('Query Failed');
    }
}
catch(Exception $e){
    echo $e->getMessage();
}

我只知道 Exception 是因为 PDOException 是个例外的孩子。抓住父母就会抓住所有的孩子。

yr9zkbsy

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
iyr7buue

iyr7buue3#

如果不想使用try-catch语句,仍然可以使用以下代码:

$query = $db->prepare("SELECT * FROM table");
if(!$query->execute()) {
   print_r($query->errorInfo());
}
xghobddn

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();
}        
}

相关问题