Traitement erreurs personnalisées SQL/PDO/PHP
Résolu/Fermé
DebianCoq
Messages postés
26
Date d'inscription
lundi 20 janvier 2014
Statut
Membre
Dernière intervention
24 février 2016
-
20 janv. 2014 à 21:45
DebianCoq Messages postés 26 Date d'inscription lundi 20 janvier 2014 Statut Membre Dernière intervention 24 février 2016 - 21 janv. 2014 à 18:21
DebianCoq Messages postés 26 Date d'inscription lundi 20 janvier 2014 Statut Membre Dernière intervention 24 février 2016 - 21 janv. 2014 à 18:21
A voir également:
- Traitement erreurs personnalisées SQL/PDO/PHP
- Easy php - Télécharger - Divers Web & Internet
- Traitement de texte gratuit - Guide
- Traitement de texte gratuit open office - Télécharger - Suite bureautique
- Traitement du dédouanement terminé shein - Forum Consommation & Internet
- Blob sql ✓ - Forum Webmastering
3 réponses
DebianCoq
Messages postés
26
Date d'inscription
lundi 20 janvier 2014
Statut
Membre
Dernière intervention
24 février 2016
5
Modifié par DebianCoq le 21/01/2014 à 18:36
Modifié par DebianCoq le 21/01/2014 à 18:36
Merci Pitet pour la clarté ta réponse, c' est en effet ce que j' ai fini par comprendre après bien des tentatives infructueuses...
Et tout à coup, ça marche beaucoup mieux :D
En fait je n'utilise le try{...} catch{...} que pour ouvrir la connexion (simple précaution puisque je n' utilise qu' une seule base de donnée pour mon site) avec en cas d' erreur un message personnalisé.
Concernant les erreurs SQL je les recupere avec errorInfo() et les traite selon mes besoins...
Voici le script si ça interesse ou peut aider quelqu' un:
Voilà avec ce principe j' obtiens de beaux messages d' erreur de type warning qui sont tous semblables, plus clairs et que je peux plus facilement retrouver et traiter après avoir enregistré dans un log.
Bonne soirée
Et tout à coup, ça marche beaucoup mieux :D
En fait je n'utilise le try{...} catch{...} que pour ouvrir la connexion (simple précaution puisque je n' utilise qu' une seule base de donnée pour mon site) avec en cas d' erreur un message personnalisé.
Concernant les erreurs SQL je les recupere avec errorInfo() et les traite selon mes besoins...
Voici le script si ça interesse ou peut aider quelqu' un:
try {
//essai de se connecter a la base de donnee
$sql = new PDO( [Vos infos de connexion] );
}
catch(Exception $e) {
//Si ca ne se connecte pas on renvoie une erreur
trigger_error($e->getMessage(), E_USER_WARNING);
}
//Puis j' exécute une requete...
$req = $sql->prepare("SELECT 'nom' FROM 'table_inexistante'");
$req->execute(array());
$res = $req->fetch(PDO::FETCH_OBJ);
$req->closeCursor();
if($res) {
return($res->nom);
}
else {
// Recuperation de l' erreur
$res = $req->errorInfo();
unset($res[0]); // Facultatif
//Si il y a une erreur on renvoie un message d' erreur
trigger_error('(Sql #'.$res[1].') - '.$res[2], E_USER_WARNING);
}
Voilà avec ce principe j' obtiens de beaux messages d' erreur de type warning qui sont tous semblables, plus clairs et que je peux plus facilement retrouver et traiter après avoir enregistré dans un log.
Bonne soirée
DebianCoq
Messages postés
26
Date d'inscription
lundi 20 janvier 2014
Statut
Membre
Dernière intervention
24 février 2016
5
20 janv. 2014 à 22:32
20 janv. 2014 à 22:32
Un début de solution mais toujours mais je n' ai visiblement pas tout compris au fonctionnement de try.{...}catch{...}.
Voici le code modifié qui ressort bien l' erreur indiquant une table inexistante, cependant je m' attendais depuis le début à voir ce message apparaître dans catch{...}
Quelqu' un saurait il m' expliquer ce qui m' échappe? Merci
Voici le code modifié qui ressort bien l' erreur indiquant une table inexistante, cependant je m' attendais depuis le début à voir ce message apparaître dans catch{...}
try {
$req = $sql->prepare("SELECT nom FROM table_inexistante WHERE id = ?");
$req->execute(array(0));
$res = $req->fetch(PDO::FETCH_OBJ);
$req->closeCursor();
echo "<br />PDO::errorInfo() retourne les valeurs suivantes: <pre>";
print_r($req->errorInfo());
echo "</pre>";
}
catch (PDOException $erreur) {
echo 'Erreur : '.$erreur->getMessage();
}
Quelqu' un saurait il m' expliquer ce qui m' échappe? Merci
DebianCoq
Messages postés
26
Date d'inscription
lundi 20 janvier 2014
Statut
Membre
Dernière intervention
24 février 2016
5
21 janv. 2014 à 15:26
21 janv. 2014 à 15:26
J' en déduis à tête reposée que ce genre d' erreur ne génère pas d' exception et que ce dernier code est valide. Merci
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
21 janv. 2014 à 15:41
21 janv. 2014 à 15:41
Salut,
La réponse à ta question est sur cette page : https://www.php.net/manual/fr/pdo.error-handling.php
En résumé, par défaut PDO ne déclenche pas d'exception sur les erreurs SQL.
Bonne journée
La réponse à ta question est sur cette page : https://www.php.net/manual/fr/pdo.error-handling.php
En résumé, par défaut PDO ne déclenche pas d'exception sur les erreurs SQL.
Bonne journée