Question

J'ai rencontré un problème en utilisant PDO parce qu'une erreur n'a pas été pris.

Le code est simple et fonctionne très bien, je vais 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 qu'aucun enregistrement n'a été ajoutés ou modifiés et aucune erreur n'a été pris.

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

La solution était simple à la fin, j'utilisais un utilisateur MySQL limité qui ne dispose pas des autorisations d'écriture sur la table. Ces erreurs toujours affichées immédiatement lors de l'utilisation de MySQL, mais en utilisant PDO Je ne sais pas comment se rendre à eux.

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

Était-ce utile?

La solution

PDO::errorInfo() ou PDOStatement->errorInfo()

En ce qui concerne les exceptions, vérifiez la documentation pour "Erreurs et gestion des erreurs" en AOP . Les exceptions ne sont pas jetés par défaut, ce qui est la raison pour laquelle vous pouvez les activer.

Voir aussi:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top