Dépannage PDO: Erreur n'est pas pris lors de l'exécution d'une instruction préparée

J'ai couru dans un problème en utilisant PDO car une erreur n'a pas été pris.

Le code est simple et fonctionne très bien, je vais inclure un échantillon afin d'éviter la confusion:

$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";
}

Le code fonctionne bien, mais lorsque l'on travaille sur un nouveau module, j'ai rencontré un problème qu'aucun enregistrement n'a été ajoutée ou modifiée et aucune erreur n'a été pris.

$stmt retourné false mais je n'ai pas la moindre idée de pourquoi ou comment trouver l'erreur.

La solution est simple en fin de compte, j'ai été en utilisant un limitées utilisateur MySQL qui n'a pas d'autorisations en écriture à la table. Ces erreurs de toujours affiché immédiatement lors de l'utilisation de mysql, mais l'utilisation de PDO, je ne sais pas comment l'obtenir.

Comment puis-je obtenir PHP /PDO pour afficher ou de prendre ce genre d'erreurs de base de données?

OriginalL'auteur jeroen | 2009-03-27