Устранение неполадок PDO: ошибка не обнаружена при выполнении подготовленного оператора - PullRequest
3 голосов
/ 27 марта 2009

Я столкнулся с проблемой при использовании PDO, поскольку ошибка не обнаружена.

Код прост и работает отлично, я просто включу пример, чтобы избежать путаницы:

$sql = 'INSERT INTO somedatetable (something) 
        VALUES (:something) 
        ON DUPLICATE KEY UPDATE something=:something';

$values = array(":something" => $something);

try {
    $stmt = $dbh->prepare($sql);    
    $stmt->execute($values);    
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage() . "<br />\n";
}

Код работает нормально, однако при работе с новым модулем я столкнулся с проблемой, что ни одна запись не была добавлена ​​или изменена, а ошибка не обнаружена.

$stmt вернул false но я понятия не имел, почему или как найти ошибку.

В конце концов, решение было простым, я использовал ограниченного пользователя MySQL, у которого не было разрешений на запись в таблицу. Эти ошибки всегда отображаются сразу при использовании mysql, но при использовании PDO я не знаю, как их найти.

Как заставить PHP / PDO отображать или отлавливать подобные ошибки базы данных?

1 Ответ

8 голосов
/ 27 марта 2009

PDO::errorInfo() или PDOStatement->errorInfo()

Что касается исключений, проверьте документы для "Ошибки и обработка ошибок" в PDO . Исключения не генерируются по умолчанию, поэтому вы можете их разрешить.

Смотрите также:

...