Classe de connexion à MySQL en PHP5.

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Classe de connexion à MySQL en PHP5.

  • Par crocxx
  • 7 commentaires
  • 31 804 lectures
  • De crocxxx
  • RSS -  Atom

Classe de gestion simplifiée de connexion à MySQL en PHP5. Cette classe dispose de sa propre gestion des erreurs. Elle renvoit des exceptions de type MySQLException.

Portion de code

<?php
  /**
  * Gestion des erreurs avec les exeptions
  */
  class MySQLExeption  extends Exception
  {
    public function __construct($Msg) {
      parent :: __construct($Msg);
    }
    public function RetourneErreur() {
      $msg  = '<div><strong>' . $this->getMessage() . '</strong>';
      $msg .= ' Ligne : ' . $this->getLine() . '</div>';
      return $msg;
    }
  }
?>
<?php
  class Mysql
  {
    private
      $Serveur     = '',
      $Bdd         = '',
      $Identifiant = '',
      $Mdp         = '',
      $Lien        = '',
      $Debogue     = true,
      $NbRequetes  = 0;
    /**
    * Constructeur de la classe
    * Connexion aux serveur de base de donnée et sélection de la base
    *
    * $Serveur     = L'hôte (ordinateur sur lequel Mysql est installé)
    * $Bdd         = Le nom de la base de données
    * $Identifiant = Le nom d'utilisateur
    * $Mdp         = Le mot de passe
    */
    public function __construct($Serveur = 'localhost', $Bdd = 'base', $Identifiant = 'root', $Mdp = '')
    {
      $this->Serveur     = $Serveur;
      $this->Bdd         = $Bdd;
      $this->Identifiant = $Identifiant;
      $this->Mdp         = $Mdp;
      $this->Lien=mysql_connect($this->Serveur, $this->Identifiant, $this->Mdp);
      if(!$this->Lien && $this->Debogue)
        throw new MySQLExeption('Erreur de connexion au serveur MySql!!!');
      $Base = mysql_select_db($this->Bdd,$this->Lien);
      if (!$Base && $this->Debogue)
        throw new MySQLExeption('Erreur de connexion à la base de donnees!!!');
    }
    /**
    * Retourne le nombre de requêtes SQL effectué par l'objet
    */
    public function RetourneNbRequetes()
    {
      return $this->NbRequetes;
    }
    /**
    * Envoie une requête SQL et récupère le résultât dans un tableau pré formaté
    *
    * $Requete = Requête SQL
    */
    public function TabResSQL($Requete)
    {
      $i = 0;
      $Ressource = mysql_query($Requete,$this->Lien);
      $TabResultat=array();
      if (!$Ressource and $this->Debogue) throw new MySQLExeption('Erreur de requête SQL!!!');
      while ($Ligne = mysql_fetch_assoc($Ressource))
      {
        foreach ($Ligne as $clef => $valeur) $TabResultat[$i][$clef] = $valeur;
        $i++;
      }
      mysql_free_result($Ressource);
      $this->NbRequetes++;
      return $TabResultat;
    }
    /**
    * Retourne le dernier identifiant généré par un champ de type AUTO_INCREMENT
    *
    */
    public function DernierId()
    {
        return mysql_insert_id($this->Lien);
    }
    /**
    * Envoie une requête SQL et retourne le nombre de table affecté
    *
    * $Requete = Requête SQL
    */
    public function ExecuteSQL($Requete)
    {
      $Ressource = mysql_query($Requete,$this->Lien);
      if (!$Ressource and $this->Debogue) throw new MySQLExeption('Erreur de requête SQL!!!');
      $this->NbRequetes++;
      $NbAffectee = mysql_affected_rows();
      return $NbAffectee;
    }
  }
?>
<?php
  /**
  * Utilisation de la classe
  */
  try
  {
    $Mysql = new Mysql('localhost', 'base', 'login', 'password');
    $Resulats = $Mysql->TabResSQL('SELECT Champ1,Champ2 FROM table');
    foreach ($Resulats as $Valeur)
    {
      echo $Valeur['Champ1'];
      echo $Valeur['Champ2'];
    }
  }
  catch (MySQLExeption $e)
  {
    echo $e -> RetourneErreur();
  }
?>

Les commentaires

1. Par JG le 04/03/2008 09:01

Bonjour,

Et pourquoi ne pas parler de MySQLi, qui offre déjà un code orienté objet très complet ?

2. Par Emacs le 04/03/2008 09:10

Oui c'est exact. J'ai ajouté cette source que l'on m'a proposé histoire de montrer une autre façon de manipuler les données issues d'une BDD mais c'est tout simplement réinventer la roue en moins bien sachant que MySQLi ou PDO servent à ça avec plus de fonctionnalités.

3. Par over le 06/03/2008 15:14

MySQL fonctionne avec PHP 4 et 5... Donc si c'est pour du PHP5... autant donné aux gens de vouloir utiliser MySQLi
Il faudrait reformuler le titre

4. Par Paco le 30/08/2008 00:11

Moi j'utilise la classe de PunBB pour mes requêtes... c'est bien pratique, et je sais plus faire autrement

5. Par Emacs le 30/08/2008 02:17

Tu peux utiliser la classe native PDO tout simplement

6. Par wamp le 16/12/2009 13:43

Bonjour, un peut en retard...
j'aurais aimer savoir à quoi corresponds $lien???
Merci

7. Par savannah le 27/12/2009 12:25

pour répondre Wamp
$Lien correspond à $this->Lien=mysql_connect($this->Serveur, $this->Identifiant, $this->Mdp);