2013年7月13日 星期六

Try抓不到的錯誤

以前在寫asp.net時只要把程式包在try中、就算command有問題也是可以在catch中抓到錯誤 但是方法在PHP就行不通了、必須要另外去抓stmt的錯誤訊息才有辦法 可能是對PHP來說這不算是會讓程式終止的錯誤、所以不會丟出exception、要去抓stmt的錯誤才有辦法

$dbh = new PDO($dns, $userId, $password);
$query = 'select customername from customers where cusstomername like :name';
try {
    $sth = $dbh->prepare($query);
    $sth->execute(array(':name' => 'a%'));
    while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        printf('customername : %s<br/>', $row['customername']);
    }
} catch (PDOException $exc) {
    echo 'error';
}

沒有這個cusstomername、但是抓不到錯誤

$dbh = new PDO($dns, $userId, $password);
$query = 'select customername from customers where cusstomername like :name';
try {
    $sth = $dbh->prepare($query);
    if ($sth->execute(array(':name' => 'a%'))) {
        while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
            printf('customername : %s<br/>', $row['customername']);
        }
    } else {
        $stherr = $sth->errorInfo();
        echo $stherr[2];
    }
} catch (PDOException $exc) {
    echo 'error';
}

這樣才有錯誤"Unknown column 'cusstomername' in 'where clause'"

沒有留言:

張貼留言