samedi 23 mars 2013

Pas d'erreur houston ?

Autre problème, vous avez peut-être (plus ou moins volontairement) commis des erreur en saisissant la requète, si ça n'est pas le cas allez y, introduisez une erreur de syntaxe dans la ligne :
?
1
$select = $connection->query("SELECT * FROM mauvaisetable");
La requète ne produit aucune erreur ! C'est très contrariant...
Cela est un réél problème car par la suite, nous executons une serie de traitement pour les résultats de cette requète en partant du principe que cette dernière a fonctionné... Si elle échoue à cause d'une erreur de syntaxe, nous risquons de mettre du temps à comprendre que le problème se situe au niveau de la requète et pas au niveau de son traitement...
Pour régler le soucis, la première étape va être d'indiquer à notre connection que nous voulons que des erreurs soit émises, pour cela modifier notre fichier de connection de cette façon :
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Connection au serveur
try {
  $dns = 'mysql:host=localhost;dbname=ma_base_de-donnees';
  $utilisateur = 'sergio';
  $motDePasse = 'azerty';
 
  // Options de connection
  $options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
  );
  $connection = new PDO( $dns, $utilisateur, $motDePasse, $options );
} catch ( Exception $e ) {
  echo "Connection à MySQL impossible : ", $e->getMessage();
  die();
}
En testant l'envois de la requète, vous pourrez constater qu'une belle erreur s'affiche, bien entenu, la récupération des requètes et leur traitement vont maintenant être placées des des blocs try / catch :
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Connection au serveur
require_once('conf/connection.php');
 
// Récupération des données
try {
  // On envois la requète
  $select = $connection->query("SELECT * FROM createurs");
 
  // On indique que nous utiliserons les résultats en tant qu'objet
  $select->setFetchMode(PDO::FETCH_OBJ);
 
  // Nous traitons les résultats en boucle
  while( $enregistrement = $select->fetch() )
  {
    // Affichage des enregistrements
    echo '<h1>', $enregistrement->nom, ' ', $enregistrement->prenom, '</h1>';
  }
} catch ( Exception $e ) {
  echo "Une erreur est survenue lors de la récupération des créateurs";
}
 

Aucun commentaire:

Enregistrer un commentaire