См. Документы о PDO Обработка ошибок и этот комментарий
По умолчанию вы должны проверить возврат выполнения.Подробности можно найти в errorinfo () и errorcode ()
if ($sql->execute === false) { //check return, false on error
var_dump($sql->errorinfo(); //array containing information on error
die()
}
Но я бы рекомендовал использовать PDO :: ERRMODE_EXCEPTION, чтобы PDOException выбрасывается при ошибке.Это делает ваш код немного аккуратнее.Основная информация предоставляется в исключении __ toString () , но дополнительную информацию можно найти (используя обычные методы исключения, см. Ссылку на документацию выше).
$db = new PDO( /* your connection string */ );
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
try {
$sql = $db->prepare("INSERT INTO `aliases` (`alias`, `domain`, `added`, `enabled`) VALUES (:alias, :domain, :added, :enabled)");
$sql->execute();
}
catch(PDOException $e) {
echo $e; //basic information is provided due to Exception::__toString()
die();
}