Class mysql en php 5

Description

une class de gestion partielle des requêtes de base de mysql select insert , update et delete optimiser pour économiser au maximum le ressource serveur cette class retourne un tableau suite a une requête avec la clause select et l'insert_id suite a la clause insert et true/false dans le cas d'un update alors que le delete utilise une jointure avance avec join qui est plus effeicace que les jointure avec where

Source / Exemple :


class MySQL {
   
   private $dbHost; //serveur
   private $dbUser; //utilisateur
   private $dbPass; //mot de passe
   private $dbName; //utilisateur
   private $idConn = NULL; //identifiant de connexion
   private $result; // reultat de la requete
   
  /***

  • @desc : Constructeur de la classe
  • @param : none
  • @return : none
  • /
public function __construct($dbhost, $dbuser, $dbpass,$dbname) { $this->dbHost = $dbhost; $this->dbUser = $dbuser; $this->dbPass = $dbpass; $this->dbName = $dbname; }//end __construct() /***
  • @desc : Connexion à la base de données
  • @param : none
  • @return : none
  • /
public function connect() { //connexion au serveur mysql $this->idConn = mysql_connect($this->dbHost,$this->dbUser,$this->dbPass); if( !$this->idConn ) { // On lance l'exception } else { // Une connexion est établit on selection notre BD $this->selectDB(); }//end if }//end connect() /***
  • @desc : Selectionne un BD
  • @param : none
  • @return : none
  • /
public function selectDB() { // Si la BD n'est pas sélectionnée if( !mysql_select_db($this->dbName,$this->idConn) ) { // On lance une exception }//end if }//end selectDB() /***
  • @desc : Execute une requête SQL
  • @param : String SQL
  • @return : Array hash de resultat de requête select/Bool
  • /
public function query($sql) { // Verifier s'il y'a une connexion établie à un serveur if( $this->idConn == NULL) { //On lance une exception il doit y avoir une connexion établie au préalable } // Securité if( is_string($sql) ) { if( !$this->result = mysql_query($sql,$this->idConn) ) { // On lance une exception return false; } else { // On test si c'est une requête de Selection if( stristr(strtoupper($sql), 'SELECT') == true ) { $i = 0; // On construit notre $resArray while( $row = mysql_fetch_assoc($this->result) ) { $resArray[$i] = $row; ++$i; }//end while // On libere la ressource mysql_free_result($this->result); return $resArray; } else { // c'est n'est pas une requete SELECT // on informe juste que c'est bien passer return true; }//end if/else 2 }//end if/else 1 } else { // On lance une exception la requete doit etre une chaine return false; } }//end query() /***
  • @desc : Insere des données dans une table;
  • @param : String table, Array fieldArray
  • @return : Bool
  • /
public function insert ($table,$fieldArray){ // Formulation de la requête SQL partie 1 : insert into table $sql = 'INSERT INTO `'.$table.'`'; // Récuperation des clés du tableau $fieldArray qui vont representer les champs $fieldsName = array_keys($fieldArray); // Implosion du tableau fieldsName // Partie : 2 insert into table(`champ1`,`champ2`,...,`champN`) $sql .= '(`'.implode('`,`',$fieldsName).'`) '; // Formulation de la requête SQL // Partie 3-1 : insert into table(`champ1`,`champN`)values ( $sql .= 'VALUES ('; // Récupération des valeurs du tableau qui vont representer les valeurs des champs $fieldsValue = array_values($fieldArray); // Reconstitution du tableau sous la forme 'val1','val2','valN' foreach( $fieldsValue as $v ) { if( strcmp($v,"NULL") == 0 ) { $tampon[] = 'NULL'; } else { $tampon[] = "'".$v."'"; }//end if/else }//end foreach // Formulation de la requête // Partie 3-2 insert into table(`champ1`,`champN`)values(`champ1`,`champN`) $sql .= implode(",",$tampon).")"; // Si tous c'est bien passer on retourne le dernier id inserer if ( $this->query($sql) ) { return mysql_insert_id($this->idConn); } else { // On lance une exception return false; } }//end insert() /***
  • @desc : MAJ des données dans une table
  • @param : String table, Array fieldArray, String where
  • @return : Bool
  • /
public function update($table,$fieldArray,$where){ // Contrôler l'existance de la clause where pour eviter une Maj de toutes les données if( !empty ($where) ) { $sql = 'UPDATE `'.$table.'` SET '; // Recupération des clés du tableau $fieldArray ceux-ci represente le champs $fieldsName = array_keys($fieldArray); // Recupération des valeurs du tableau $fieldArray ceux-ci represente les // valeurs des champs $fieldsValue = array_values($fieldArray); $nbFields = count($fieldsName); // Boucler pour Constituer la requête SQL for( $i = 0; $i < $nbFields; ++$i ) { $k = $fieldsName[$i]; $v = $fieldsValue[$i]; // Si l'une des valeur est Null if( strcmp($v,'NULL') == 0 ) { // On reconstitue la requête avec la valeur du champs null en vue de debogage $sql .= $k. '= NULL'; break; } else { $sql .= '`'.$k.'`'. "='".$v."'"; $sql .= ( ($i == count($fieldsName) - 1)?'':' , '); }//end if/else $sql .= ' WHERE '.$where; if ( !$this->query($sql) ) { // On lance une exception return FALSE; } else { return TRUE; } }//end for }//end if }//end update() /***
  • @desc : Supprime des données d'une ou plusieurs table
  • @param : String table || Array table, String innerOrLeft, String attrib ,String where
  • @return : int nbaffectedrows
  • /
public function delete($table,$innerOrLeft,$attrib,$where) { // Eviter un delete global donc tester l'existance de la cluase WHERE if( !empty( $where ) ) { //verifier s'il s'agit d'un delete d'une table ou plusieur if( is_array ($table) ) { // Il s'agit d'un delete devant s'éffectuer sur plusieurs tables $sql = 'DELETE FROM `'.$table[0].'`'; $nbTables = count($table); for( $i = 1; $i < $nbTables ; ++$i ) { $sql .= ' '.(!empty($innerOrLeft)?$innerOrLeft:'INNER').' JOIN `'.$table[$i].'`'; }//end for $sql .= ' USING ('.$attrib.') WHERE '.$where; $delValidate = $this->query(sql); } else { $sql = 'DELETE FROM `'.$table.'` WHERE '.$where; $delValidate = $this->query($sql); } if( !$delValidate ) { //on lance une exception return false; } else { return mysql_affected_rows($this->idConn); }//end if/else }//end if }//end delete() /***
  • @desc : Retourne le nombre de resultat
  • @param : Mysql ressource result
  • @return : Int nbresult
  • /
public function numRows($result) { return mysql_num_rows($result); }//end numRows() /***
  • @desc : Destructeur
  • @param : none
  • @return : none
  • /
public function __destruct() { mysql_close($this->idConn) }//end destruct() }//end MySQL

Conclusion :


cette class n'est qu'a son tous début dans cette version j'ai juste voulue mettre en œuvre une technique de codage simple et performante pour aborder en premier la notion objet en php 5 et en deuxième lieu une manière efficace d'alléger les tache au serveur de BD en optimisant la manière dont la class est codé.
j'ai l'intention dans la prochaine version d'inclure la gestion des exception et ajouter d'autre fonctionnalité en attendant j'espère que cette classe sera d'une utilité a tous
alors vos suggestions et vos remarques sont les bienvenu

Codes Sources

A voir également

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.