PHP PDO:显示错误

时间:2012-08-03 13:02:50

标签: php pdo

我是否需要使用try和catch块来显示PHP的PDO扩展错误?

例如,使用mysql,您可以通常执行以下操作:

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

4 个答案:

答案 0 :(得分:1)

您可以通过PDO :: ATTR_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

答案 1 :(得分:1)

PDO默认支持它自己的异常类PDOException

没有理由不能使用:

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

我只抓住Exception的原因是因为PDOException是异常的孩子。抓住父母会抓住所有孩子。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

如果您不想使用try catch语句,您仍然可以使用这种代码:

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