3

PHP の PDO 拡張でエラーを表示するには、try および catch ブロックを使用する必要がありますか?

たとえば、mysql を使用すると、通常は次のようなことができます。

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

4 に答える 4

1

PDOは、デフォルトで独自の例外クラスをサポートしていますPDOException

使用できない理由はありません。

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

私が捕まえるのExceptionPDOException例外の子だからです。親を捕まえると、すべての子供が捕まります。

于 2012-08-03T13:32:41.053 に答える
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
于 2012-08-03T13:11:37.253 に答える
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();
}        
}
于 2012-12-11T05:03:55.363 に答える
0

try catch ステートメントを使用したくない場合でも、この種のコードを使用できます。

$query = $db->prepare("SELECT * FROM table");
if(!$query->execute()) {
   print_r($query->errorInfo());
}
于 2012-08-03T13:05:58.137 に答える