Dans l'objectif de créer un framework PHP francophone, j'ai mis au point une classe d'exploitation MySQL. La voici donc:
Source / Exemple :
<?php
/****************************************************************************************
Classe pour la manipulation de bases de données MySQL
Auteur : Mathieu ROBIN
Créée le : 02/04/2007
Dernière modification le : 24/12/2007
Commentaires : le constructeur connecte automatiquement l'instance de la classe à la base
class DBMySql
{
/**
- Identifiant de connection
*
private $ConnectionID;
/**
- Variable de stockage de résultat
*
private $result;
/**
- Ligne de table ou de résultat de requête
*
private $ligne;
/**
- Serveur hôte de la base de données
*
private $serveur="";
/**
- Nom de la base de données
*
private $base="";
/**
- Utilisateur de la base de données
*
private $utilisateur="";
/**
- Mot de passe de l'utilisateur de la base de données
*
public $mdp="";
/**
*
- @param Chaîne $serveur
- @param Chaîne $utilisateur
- @param Chaîne $mdp
- @param Chaîne $bdd
- @param Entier $ctID Identifiant de connection
- @return DBMySql
- /
function DBMySql($serveur, $utilisateur, $mdp, $base, $ctID=0)
{
$this->serveur=$serveur;
$this->utilisateur=$utilisateur;
$this->mdp=$mdp;
$this->base=$base;
$this->ConnectionID=$ctID;
$retour=$this->ConnectionID;
try
{
$this->Connection($this->serveur, $this->utilisateur, $this->mdp, $this->base);
}
catch (Exception $Except)
{
$retour=false;
}
return($retour);
}
/**
- Ouvre une connexion à un serveur MySQL
*
- @param Chaîne $serveur
- @param Chaîne $utilisateur
- @param Chaîne $mdp
- @param Chaîne $bdd
- @return Booléen
- /
function Connection($serveur, $utilisateur, $mdp, $base)
{
try
{
$this->ConnectionID=mysql_connect($serveur, $utilisateur, $mdp);
return($this->SelectBDD($base));
}
catch (Exception $Except)
{
return(false);
}
}
/**
- Sélectionne une base de données
*
- @param Chaîne $bdd
- @return Booléen
- /
function SelectBDD($bdd)
{
$this->base=$bdd;
try
{
return(mysql_select_db($bdd, $this->ConnectionID));
}
catch(Exception $Except)
{
return(false);
}
}
/**
- Envoie une requête de mise à jour et retourne combien de lignes ont été affecté par l'opération
*
- @param Chaîne $sql
- @return Tableau
- /
function ReqUPDATE($sql)
{
if(preg_match("#^UPDATE (.){1,} SET (.){1,};$#i", $sql))
{
try
{
mysql_query($sql);
$this->result=mysql_affected_rows();
$retour[0]=$this->result;
$retour[1]=true;
}
catch(Exception $Except)
{
$retour[0]=0;
$retour[1]=false;
$retour[2]=$Except->getMessage();
}
}
else
{
$retour[0]=0;
$retour[1]=false;
$retour[2]="Mauvais format";
}
return($retour);
}
/**
- Envoie une requête d'insertion et retourne l'identifiant automatique généré par MySQL pour cette insertion
*
- @param Chaîne $sql
- @return Tableau
- /
function ReqINSERT($sql)
{
if(preg_match("#^INSERT INTO (.){1,} VALUES (.){1,};$#i", $sql))
{
try
{
mysql_query($sql);
$this->result=mysql_insert_id();
$retour[0]=$this->result;
$retour[1]=true;
}
catch (Exception $Except)
{
$retour[0]=0;
$retour[1]=false;
$retour[2]=$Except->getMessage();
}
}
else
{
$retour[0]=0;
$retour[1]=false;
$retour[2]="Mauvais format";
}
return($retour);
}
/**
- Envoie une requête de suppression et retourne combien de lignes ont été affecté par l'opération
*
- @param Chaîne $sql
- @return Tableau
- /
function ReqDELETE($sql)
{
if(preg_match("^DELETE FROM (.){1,};$#i",$sql))
{
try
{
mysql_query($sql);
$this->result=mysql_affected_rows();
$retour[0]=$this->result;
$retour[1]=true;
}
catch (Exception $Except)
{
$retour[0]=0;
$retour[1]=false;
$retour[2]=$Except->getMessage();
}
}
else
{
$retour[0]=0;
$retour[1]=false;
$retour[2]="Mauvais format";
}
return($retour);
}
/**
- Envoie une requête de sélection et retourne combien de lignes sont sélectionnées
*
- @param Chaîne $sql
- @return Tableau
- /
function ReqSELECT($sql)
{
if(preg_match("#^SELECT (.){1,} FROM (.){1,};$#i", $sql))
{
try
{
$this->result=mysql_query($sql);
$retour[0]=mysql_num_rows($this->result);
$retour[1]=true;
}
catch (Exception $Except)
{
$retour[0]=0;
$retour[1]=false;
$retour[2]=$Except->getMessage();
}
}
else
{
$retour[0]=0;
$retour[1]=false;
$retour[2]="Mauvais format";
}
return($retour);
}
/**
- Retourne la valeur maximale d'un champ dans une table
*
- @param Chaîne $table Table
- @param Chaîne $champ
- @return Entier
- /
function MaxChamp($table, $champ)
{
return($this->ReqSELECT("SELECT MAX(".$champ.") FROM ".$table));
}
/**
- Retourne le nombre de lignes d'un résultat MySQL
*
function NbrLignes()
{
try
{
$retour[0]=mysql_num_rows($this->result);
$retour[1]=true;
}
catch (Exception $Except)
{
$retour[0]=0;
$retour[1]=false;
$retour[2]=$Except->getMessage();
}
return($retour);
}
/**
- Retourne le nombre de lignes affectées lors de la dernière opération MySQL
*
function TuplesAffect()
{
return(mysql_affected_rows());
}
/**
- Retourne l'identifiant généré par la dernière requête INSERT MySQL
*
function IDInsertion()
{
return(mysql_insert_id($this->ConnexionID));
}
/**
- Retourne le texte associé avec l'erreur générée lors de la dernière requête
*
function Erreur()
{
return(mysql_error());
}
/**
- Ferme une connection MySQL
*
function Deconnection()
{
return(mysql_close());
}
}
?>
Conclusion :
Si vous pouviez me dire ce que vous en pensez, objectivement. Me dire ce que vous pensez qu'il manque ou qui devrait être tourné différemment afin de l'améliorer, ça serait sympa.
La classe est commentée pour pouvoir être utilisée dans des éditeurs supportant l'auto-complétion, tel que Zend Development Environment.
Lorsque le framework sera "terminé", je le mettrai également sur Codes-Sources dans son intégralité.
Merci de votre aide
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.