Buenas,
@jotaincubus y @Triby, por defecto PDO trabaja en ERRMODE_SILENT, pero se puede configurar para que lance las excepciones, es mas, es una de las razones por la que los FW's extienden PDO, para setearlo de forma automática, algo así:
Código PHP:
Ver originalclass PDOConnection extends PDO
{
public function __construct
($dsn, $user = null, $password = null, array $options = null) {
parent::__construct($dsn, $user, $password, $options);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
}
$conn = new PDOConnection('mysql:dbname=mydb', 'username', 'passwd');
try {
$stmt = $conn->prepare('SELECT * FROM non-existent-table');
$stmt->execute();
} catch (PDOException $e) {
}
también pueden setear los atributos después de instanciar PDO o directamente en el constructor, algo así:
Código PHP:
Ver original$pdo = new PDO
('mysql:dbname=mydb', 'username', 'passwd', array(PDO
::ATTR_ERRMODE => PDO
::ERRMODE_EXCEPTION));
Saludos.