Classe de connexion à MySQL en PHP5. - Apprendre-PHP.com

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

Classe de connexion à MySQL en PHP5.

ElePHPant El-Roubio

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

Classe MySQLException
<?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;
}
}
?>
Classe MySQL
<?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;
}
}
?>
Utilisation de la classe
<?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 mardi 04 mars 2008 à 09:09

Bonjour,

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

2. Par Emacs le mardi 04 mars 2008 à 09:09

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 jeudi 06 mars 2008 à 15:03

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 samedi 30 août 2008 à 00:12

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

5. Par Emacs le samedi 30 août 2008 à 02:02

Tu peux utiliser la classe native PDO tout simplement Emoticone content

Ajouter un commentaire

Votre avis
Se souvenir de mes informations