Я столкнулся с проблемой при использовании 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 отображать или отлавливать подобные ошибки базы данных?