2012-08-03 129 views
3

我是否需要使用try和catch塊來顯示PHP PDO擴展的錯誤?PHP PDO:顯示錯誤

例如,使用MySQL可以usally這樣做:如果你不想使用try catch語句

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

您從不*需要*在任何地方使用try/catch,但如果您想優雅地處理異常,通常是個好主意。 – Matt 2012-08-03 13:03:56

回答

0

,你仍然可以使用這種代碼:

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

你可以選擇通過PDO PDO :: ATTR_ERRMODE有錯誤呢:

$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

PDO默認支持它自己的除ion Class,PDOException

不應該有任何理由,你爲什麼不能使用:

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

的原因,我只趕上Exception是因爲PDOException是異常的孩子。抓住父母會抓住所有的孩子。

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