Я использую PDO для перезаписи интерфейса веб-сайта для базы данных. Я использовал расширение mysql, но я никогда не беспокоился об обработке ошибок, и несколько обработчиков ошибок, которые у меня были, были в основном копированием.
Теперь я хотел бы сделать это правильно. Однако у меня возникают проблемы с поиском ошибок, как мне хотелось бы (такие ошибки, как "Duplicate Entry", "Null Value" и т.д. В MySQL). Сколько из моего заявления должно быть в блоке try? Должно ли все это быть там? Я использую Include()
для подключения к моей БД (у которой есть своя обработка ошибок), так что это только выполнение запроса, в котором есть ошибки в этом коде. Я не могу понять, почему он не поймал ошибку при выполнении следующего кода:
try {
$stmt = $db->prepare("INSERT INTO tbl_user (id, name, password, question, answer) VALUES (NULL, :name, :password, :question, :answer)");
$stmt->bindValue(":name", $_POST['name']);
$stmt->bindValue(":password", $_POST['password']);
$stmt->bindValue(":question", $_POST['question']);
$stmt->bindValue(":answer", $_POST['answer']);
$stmt->execute();
echo "Successfully added the new user " . $_POST['name'];
} catch (PDOException $e) {
echo "The user could not be added.<br>".$e->getMessage();
}
Итак, мои вопросы: ВСЕ ЧТО должно быть в блоке try? Могу ли я просто поместить выполнение в блок try? Он должен поймать ошибку Duplicate value "John" in key "name"
, но вместо этого проходит сообщение об успешном завершении. (При попытке добавить двух пользователей "Джон" ). Я проверил в PHPMyAdmin; индекс уникален и делает ошибку, как ожидалось, просто не используя этот код.