J'ai rencontré un problème lors de l'utilisation de PDO car une erreur n'a pas été détectée.Résolution des problèmes PDO: erreur non détectée lors de l'exécution de l'instruction préparée
Le code est simple et fonctionne très bien, je vais juste inclure un échantillon pour éviter toute 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 très bien, mais lorsque l'on travaille sur un nouveau module, je suis tombé sur un problème aucun enregistrement n'a été ajouté ou modifié et aucune erreur n'a été détectée.
$stmt
a renvoyé false
mais je ne savais pas pourquoi ou comment trouver l'erreur. La solution était simple à la fin, j'utilisais un utilisateur MySQL limité qui n'avait pas d'autorisation d'écriture sur la table. Ces erreurs sont toujours affichées tout de suite en utilisant mysql, mais en utilisant PDO je ne sais pas comment les atteindre.
Comment obtenir PHP/PDO pour afficher ou attraper ce genre d'erreurs de base de données?
Merci, qui me dit exactement ce que je dois savoir. Une autre question cependant, pourquoi l'erreur n'est pas attrapée? – jeroen
Vous avez dit qu'il est retourné faux, cela signifie qu'il a été attrapé ;-) –
Ummmmmmmm, quel est le point d'avoir une déclaration catch alors s'il ne montre pas le message? Je pensais que le but de tout cela était de se débarrasser de ces combinaisons si (succès) d'autre ... – jeroen