samedi 23 mars 2013

Erreur levée par PDO

PDO étant orienté objet, il lève des exceptions en cas de problème. Les erreurs levée sont des PDOException, voici les différents type d'erreurs que vous pouvez rencontrer lorsque vous instanciez un objet PDO.

Erreur "could not find driver"

Cette erreur surviens si vous avez mal renseigné le moteur de base de données dans la DNS ou si le drivers choisi n'est pas supporté par votre serveur. Dans le cas du drivers MySQL, il est généralement actif par défaut sur la majorité des hébergements (et biensur activé par défaut sur W/Mamp).

Erreur "Unknown MySQL server host"

Cette erreur surviens quand le nom du serveur est mal renseigné / indisponible (MySQL dans notre cas). Chez certains "gros" hébergeurs, le nom du serveur beb n'est généralement pas localhost.

Erreur "Can't connect to MySQL server"

Dans le cadres des accès distants (le serveur MySQL n'est pas sur la même machine que le serveur Web), Vous obtiendrez ce message si le serveur est planté / indisponible, ou si le serveur auquel vous tenter d'accéder n'est pas un serveur de données MySQL.
Le message d'erreur appraît généralement après un certains temps (assez long) de chargement, vous verrez que la page "mouline" dans le vide. Il peut arrivé que votre serveur web lance un timeout avant que cette erreur ne survienne (votre page attend la réponse du serveur de données, mais ce dernier a mis trop de temps à répondre, du coup votre page se crash).

Erreur "Unknown database <db_name>"

Là le nom de la base de données est incorrect, ou plus grave, la base de données n'existe plus...

Erreur "Access denied for user"

Un grand classique, vous n'avez pas le droit d'accéder au serveur. Soit votre identifiant, soit votre mot de passe, soit les deux sont mal renseignés.

Intercepter les erreurs de connection avec un try { catch }

Le bloc try / catch est très pratique pour intercepter ce type d'erreur (on appelle ce genre d'erreur des Exception) :
?
1
2
3
4
5
6
7
8
9
10
// Connection au serveur
try {
  $dns = 'mysql:host=localhost;dbname=formation';
  $utilisateur = 'db_rider';
  $motDePasse = 'azerty';
  $connection = new PDO( $dns, $utilisateur, $motDePasse );
} catch ( Exception $e ) {
  echo "Connection à MySQL impossible : ", $e->getMessage();
  die();
}
La fonction die() porte bien son nom, elle va tuer le script PHP (toutes les lignes situées après le die ne seront jamais executées).
Il est fortement recommandé de se créer un fichier php (par exemple connection.php) contenant ces quelques lignes. En effet, si l'une de vos pages necessite alors un accès à la base de données, il vous suffira d'inclure ce fichier avec require_once.
?
1
require_once('conf/connection.php');

Aucun commentaire:

Enregistrer un commentaire