begin process at 2012 05 27 22:09:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > CLASS MYSQL 5/PHP5 AVEC GESTION DES EXCEPTION ET DES REQUÊTES PRÉPARÉS

CLASS MYSQL 5/PHP5 AVEC GESTION DES EXCEPTION ET DES REQUÊTES PRÉPARÉS


 Information sur la source

Note :
Aucune note
Catégorie :Base de données Classé sous :class, mysql, php, exception, requetes prepares Niveau :Initié Date de création :10/09/2011 Vu / téléchargé :3 027 / 222

Auteur : devil_may_cry

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Tout est dans le titre cette class vous offre la possibilité d'utiliser les requêtes préparés et aussi de choisir le gestionnaire des erreurs par les exceptions ou les erreur standard voici quelques exemples d'utilisation :
// Exemple d'utilisation
// Creation d'une nouvelle instance
$dbcfg['host'] = 'localhost';
$dbcfg['database'] = 'rimzik';
$dbcfg['user'] = 'root';
$dbcfg['password'] = '';
$options = array('ATTR_PERSISTENCY' => true,
  'ATTR_ERRMODE' => DATABASE::ERRMODE_EXCEPTION);
// Requete Simple
$db = DATABASE::connect($dbcfg,$options);
try {

// Execution d'une requete SQL
     $resultats = $db->Query("SELECT * FROM table");
     // Nombre de results de la requete SQL;
$nbresults = $db->rowCount($resultats);
// Recuperation du resultat de la requete
while($row = $db->fetchAssoc($resultats) ) {
//
}
//liberation des ressources
     $db->closeCursor($resultats);
//fermeture de la connexion
$db->close();
} catch (Exception $e ) {
echo $e->getMessage();
}
  // Requete PREPARE
$db = DATABASE::connect($dbcfg,$options);
try {

// Execution d'une requete SQL
     $stmt = $db->prepare("SELECT * FROM tables WHERE id=?");
     $resultats = $db->execute(array(1),$stmt);
// Nombre de results de la requete SQL;
$nbresults = $db->rowCount($resultats);
// Recuperation du resultat de la requete
while( $row = $db->fetchObject($resultats) ) {
//
}
//liberation des ressources
     $db->closeCursor($resultats);
//fermeture de la connexion
$db->close();
} catch (Exception $e ) {
echo $e->getMessage();
}
  $db = DATABASE::connect($dbcfg,$options);
   try {

$db->Begin();
// Execution d'une requete SQL
     $resultats = $db->Query("INSERT INTO table(champ) values('value')");
     //fermeture de la connexion
$db->Commit();
$db->close();
} catch (Exception $e ) {
$db->RollBack();
echo $e->getMessage();
}
// securisé une variable
//utiliser
$var = '<script type="text/javascript">alert("ok")</script>';
$var = $db->quote($var,DATABASE::PARAM_STR); // STRING
$var = $db->quote($var,DATABASE::PARAM_INT); // INTEGER
$var = $db->quote($var,DATABASE::PARAM_FLOAT); // FLOAT
$var = $db->quote($var,DATABASE::PARAM_BOOL); // BOOL
echo $var;
//dans une requête ne l'entourer pas de double quote

Source

  • <?php
  • include 'config.php';
  • class DATABASE {
  • // Hote
  • private $host = 'localhost';
  • // User
  • private $user = '';
  • // Password
  • private $password = '';
  • // Databse
  • private $database = '';
  • // Persistency
  • private $persistency = false;
  • // Port
  • private $port = NULL;
  • // Connexion id
  • private $connid = NULL;
  • // Constante pour la methode quote
  • const PARAM_STR = 1; // Cast du type STR;
  • const PARAM_INT = 2; // Cast du type INT
  • const PARAM_FLOAT = 3; // Cast du FLOAT
  • const PARAM_BOOL = 4; // Cast du type BOOL
  • // Constante pour le type d'eereur
  • const ERRMODE_EXCEPTION = 'E_EXCEPTION';
  • const ERRMODE_WARNING = 'E_WARNING';
  • // Execetion
  • private $exception = true;
  • // Instance
  • protected static $instance;
  • /***
  • * - @desc : Constructor
  • * - @params : Array $host,$user,$password,$database,$persistency,$port
  • * - @return : none
  • */
  • protected function __construct($params,$options=array()) {
  • $this->host = array_key_exists('host', $params) ? $params['host'] : 'localhost';
  • $this->user = array_key_exists('user', $params) ? $params['user'] : '';
  • $this->password = array_key_exists('password',$params) ? $params['password'] : '';
  • $this->database = array_key_exists('database',$params) ? $params['database'] : '';
  • $this->port = array_key_exists('port',$params) ? $params['port'] : '';
  • // Detection du port
  • $this->host = !empty($this->port) ? $this->host.':'.$this->port : $this->host;
  • if( !empty($options) ) {
  • // On cherche le type de handler choisit par l'utilisateur
  • if( array_key_exists('ATTR_ERRMODE', $options) ) {
  • // Gestion des erreurs avec les exceptions disponible seulement avec PHP 5
  • if( strtoupper($options['ATTR_ERRMODE']) == self::ERRMODE_EXCEPTION ) {
  • if( version_compare(PHP_VERSION, '5.0.0', '<')) {
  • $this->exception = false;
  • trigger_error("La version ".PHP_VERSION." que vous utiliser ne supporte pas les exceptions",E_USER_ERROR);
  • } else {
  • $this->exception = true;;
  • }
  • // Gestion des erreur en mode standard
  • } elseif( strtoupper($options['ATTR_ERRMODE']) == self::ERRMODE_WARNING ) {
  • $this->exception = false;
  • // Le mode de gestion des erreur est inconue
  • } else {
  • trigger_error(__CLASS__.' :: impossible d\'activer le mode de gestion d\'erreur définit',E_USER_ERROR);
  • }
  • // Demande connexion persistente
  • $this->persistency = array_key_exists('ATTR_PERSISTENCY',$options) ? $options['ATTR_PERSISTENCY'] : false;
  • } else {
  • // On définit les Exceptions comme mode d'erreur par default
  • $this->exception = true;
  • }
  • }
  • // Connexion persistente
  • if( ($this->persistency) ) {
  • $this->connid = mysql_pconnect($this->host,$this->user,$this->password);
  • } else {
  • echo 'lon';
  • $this->connid = @mysql_connect($this->host,$this->user,$this->password);
  • }
  • // Selection de la base de données
  • if( is_resource($this->connid) ) {
  • if( @mysql_select_db($this->database,$this->connid) ) {
  • //activation du support utf-8
  • mysql_query("SET NAMES 'utf8'", $this->connid);
  • return $this->connid;
  • } else {
  • if( $this->exception )
  • throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
  • else
  • trigger_error(mysql_error($this->connid),E_USER_ERROR);
  • }
  • } else {
  • if( $this->exception )
  • throw new Exception(mysql_error(),mysql_errno());
  • else
  • trigger_error(mysql_error(),E_USER_ERROR);
  • }
  • }
  • /***
  • * - @desc : Connect
  • * - @params : Array $params,Array $options
  • * - @return : none
  • */
  • public static function connect($params,$options) {
  • if (!isset(self::$instance)) {
  • self::$instance = new self($params,$options);
  • }
  • return self::$instance;
  • }
  • /***
  • * - @desc : Execute une requête SQL
  • * - @params : String $sql
  • * - @return : none
  • */
  • public function Query($sql) {
  • $this->sql = $sql;
  • $query = mysql_query($sql,$this->connid);
  • if( !$query ) {
  • if( $this->exception )
  • throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
  • else
  • return false;
  • } else {
  • return $query;
  • }
  • }
  • /***
  • * - @desc : Active ou désactive la validation automatique des requêtes
  • * - @params : Bool $autocommit
  • * - @return : Bool
  • */
  • public function AutoCommit($autocommit = true) {
  • $auto = ( $autocommit ) ? 1 : 0;
  • $query = @mysql_query('SET autocommit = '.$auto);
  • if( !$query ) {
  • if( $this->exception )
  • throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
  • else
  • return false;
  • } else {
  • return true;
  • }
  • }
  • /***
  • * - @desc : Demarre la transaction
  • * - @params : None
  • * - @return : Bool
  • */
  • public function Begin() {
  • $query = @mysql_query("BEGIN",$this->connid);
  • if( !$query ) {
  • if( $this->exception )
  • throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
  • else
  • return false;
  • } else {
  • return true;
  • }
  • }
  • /***
  • * - @desc : Valide une transaction en cours
  • * - @params : None
  • * - @return : Bool
  • */
  • public function Commit() {
  • $query = @mysql_query("COMMIT",$this->connid);
  • if( !$query ) {
  • if( $this->exception )
  • throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
  • else
  • return false;
  • } else {
  • return $query;
  • }
  • }
  • /***
  • * - @desc : Annulle une transaction en cours
  • * - @params : None
  • * - @return : Bool
  • */
  • public function RollBack() {
  • $query = @mysql_query("ROLLBACK",$this->connid);
  • if( !$query ) {
  • if( $this->exception )
  • throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
  • else
  • return false;
  • } else {
  • return $query;
  • }
  • }
  • /***
  • * - @desc : Prepare une requête
  • * - @params : String $query
  • * - @return : Bool False || Statement
  • */
  • public function prepare($query) {
  • $stmt = uniqid(mysql_thread_id());
  • $this->sql = $query;
  • $prep = sprintf('PREPARE `%s` FROM \'%s\'', $stmt, mysql_real_escape_string($query,$this->connid));
  • if( @mysql_query($prep)) {
  • return $stmt;
  • } else {
  • if( $this->exception )
  • throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
  • else
  • return false;
  • }
  • }
  • /***
  • * - @desc : Execute une requête preparé
  • * - @params : Array $varArray, Statement $stmt
  • * - @return : BOOL False || QueryResult
  • */
  • public function execute($varArray,$stmt) {
  • foreach($varArray as $id => $val) {
  • $key = sprintf('@`%s`', $id);
  • if( is_numeric($val)) {
  • $sf = '@`%s` = %s';
  • } else {
  • $sf = '@`%s` = \'%s\'';
  • }
  • $sets[$key] = sprintf($sf, $id, $this->quote((string) $val));
  • }
  • if( !empty($sets)) {
  • $set = sprintf('SET %s', implode(', ', $sets));
  • if( mysql_query($set,$this->connid) === false) {
  • if( $this->exception )
  • throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
  • else
  • return false;
  • }
  • $ext = sprintf('EXECUTE `%s` USING %s', $stmt, implode(', ', array_keys($sets)));
  • } else {
  • $ext = sprintf('EXECUTE `%s`', $stmt);
  • }
  • $query = mysql_query($ext,$this->connid);
  • if( !$query ) {
  • if( $this->exception )
  • throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
  • else
  • return false;
  • } else {
  • return $query;
  • }
  • }
  • /***
  • * - @desc : Protege les variables utilisés dans les requêtes
  • * - @params : String $value, TYPE = PARAM_STR,PARAM_INT ...
  • * - @return : value
  • */
  • public function quote($value,$type=self::PARAM_STR) {
  • switch($type) {
  • case self::PARAM_INT :
  • $value = intval($value);
  • break;
  • case self::PARAM_FLOAT :
  • $value = (float) $value;
  • break;
  • case self::PARAM_BOOL :
  • $value = (bool) $value;
  • break;
  • default:
  • if( (function_exists("get_magic_quotes_gpc") && get_magic_quotes_gpc() ) || ini_get('magic_quotes_sybase') ) {
  • $value = stripslashes($value);
  • }
  • $value = mysql_real_escape_string(htmlentities($value, ENT_QUOTES, 'UTF-8', false),$this->connid);
  • break;
  • }
  • return "'".$value."'";
  • }
  • /***
  • * - @desc : Fecth Mode Associatif
  • * - @params : Resource query result
  • * - @return : query result rows
  • */
  • public function fetchAssoc($results) {
  • return @mysql_fetch_assoc($results);
  • }
  • /***
  • * - @desc : Fecth Mode Object
  • * - @params : Resource query result
  • * - @return : query result rows
  • */
  • public function fetchObject($results) {
  • return @mysql_fetch_object($results);
  • }
  • /***
  • * - @desc : Fecth Mode NumRows
  • * - @params : Resource query result
  • * - @return : query result rows
  • */
  • public function fetchRow($results) {
  • return @mysql_fetch_row($results);
  • }
  • /***
  • * - @desc : Fecth Mode Array
  • * - @params : Resource query result
  • * - @return : query result rows
  • */
  • public function fetchArray($results) {
  • return @mysql_fetch_array($results);
  • }
  • /***
  • * - @desc : Simule le FetchAll de PDO
  • * - @params : Query result
  • * - @return : Array $results
  • */
  • public function fetchAll($result) {
  • $results = array();
  • while($row = @mysql_fetch_array($result) ) {
  • $results[] = $row;
  • }
  • return $results;
  • }
  • /***
  • * - @desc : Rettourne le nombre de rsultat d'une requête ou le nombre de champs affecter par une requête de type INSERT,UPDATE
  • * - @params : Resource query result
  • * - @return : Int numrows
  • */ public function rowCount($results) {
  • if( strpos(strtoupper($this->sql),"SELECT") == 0 ) {
  • return @mysql_num_rows($results);
  • } else {
  • return @mysql_affected_rows($this->connid);
  • }
  • }
  • /***
  • * - @desc : Retourne l'id du dernier enregistrement
  • * - @params : Void
  • * - @return : Int id
  • */
  • public function lastInsertId() {
  • return @mysql_insert_id($this->connid);
  • }
  • /***
  • * - @desc : Librer les resultats de la requête
  • * - @params : results
  • * - @return : Bool
  • */
  • public function closeCursor($results) {
  • return mysql_free_result($results);
  • }
  • /***
  • * - @desc : Erreur
  • * - @params : void
  • * - @return : String errorInfo
  • */
  • public function errorInfo() {
  • return ( $this->connid ) ? mysql_error($this->connid): mysql_error();
  • }
  • /***
  • * - @desc : Erreur Code
  • * - @params : void
  • * - @return : String errorCode
  • */
  • public function errorCode() {
  • return ( $this->connid ) ? mysql_errno($this->connid): mysql_errno();
  • }
  • /***
  • * - @desc : Fermeture de la connexion
  • * - @params : void
  • * - @return : Bool
  • */
  • public function close() {
  • return ( $this->connid ) ? mysql_close($this->connid): mysql_close();
  • }
  • }
  • ?>
<?php
include 'config.php';

class DATABASE {
	// Hote
	private $host = 'localhost';
	// User
	private $user = '';
	// Password
	private $password = '';
	// Databse
	private $database = '';
	// Persistency
	private $persistency = false;
	// Port
	private $port = NULL;
	// Connexion id
	private $connid = NULL;
	
	// Constante pour la methode quote 
	const PARAM_STR = 1; // Cast du type STR;
	const PARAM_INT = 2; // Cast du type INT
	const PARAM_FLOAT = 3; // Cast du FLOAT
	const PARAM_BOOL = 4; // Cast du type BOOL
	
	// Constante pour le type d'eereur
	const ERRMODE_EXCEPTION = 'E_EXCEPTION';
	const ERRMODE_WARNING   = 'E_WARNING';
	// Execetion
	private $exception = true;
	// Instance 
	protected static $instance;
	
   /***
	* - @desc   : Constructor
	* - @params : Array $host,$user,$password,$database,$persistency,$port
	* - @return : none
	*/
 	protected function __construct($params,$options=array()) {

		$this->host		    = array_key_exists('host', $params)	        ? $params['host']		    : 'localhost';
		$this->user		    = array_key_exists('user', $params)	        ? $params['user']		    : '';
		$this->password	    = array_key_exists('password',$params)	    ? $params['password']	    : '';
		$this->database	    = array_key_exists('database',$params)	    ? $params['database']	    : '';
		$this->port         = array_key_exists('port',$params)          ? $params['port']           : '';
		
		// Detection du port
		$this->host = !empty($this->port) ? $this->host.':'.$this->port : $this->host;
		if( !empty($options) ) {
			// On cherche le type de handler choisit par l'utilisateur
			if( array_key_exists('ATTR_ERRMODE', $options) ) {
				// Gestion des erreurs avec les exceptions disponible seulement avec PHP 5
				if( strtoupper($options['ATTR_ERRMODE']) == self::ERRMODE_EXCEPTION ) {
					if( version_compare(PHP_VERSION, '5.0.0', '<')) {
    					$this->exception = false;
						trigger_error("La version ".PHP_VERSION." que vous utiliser ne supporte pas les exceptions",E_USER_ERROR);
					} else {
						$this->exception = true;;
					}
					
				// Gestion des erreur en mode standard
				} elseif( strtoupper($options['ATTR_ERRMODE']) == self::ERRMODE_WARNING ) {
					$this->exception = false;
				// Le mode de gestion des erreur est inconue
				} else {
					trigger_error(__CLASS__.' :: impossible d\'activer le mode de gestion d\'erreur définit',E_USER_ERROR);
				}
				// Demande connexion persistente
				$this->persistency	= array_key_exists('ATTR_PERSISTENCY',$options)	? $options['ATTR_PERSISTENCY']	: false;
			} else {
				// On définit les Exceptions comme mode d'erreur par default
				$this->exception = true;
			}
		}
		// Connexion persistente
		if( ($this->persistency) ) {
			
			 $this->connid = mysql_pconnect($this->host,$this->user,$this->password);
		} else {
			echo 'lon';
			$this->connid = @mysql_connect($this->host,$this->user,$this->password);
		}
		// Selection de la base de données
		if( is_resource($this->connid) ) {
			if( @mysql_select_db($this->database,$this->connid) ) {
				//activation du support utf-8
				mysql_query("SET NAMES 'utf8'", $this->connid);
				return $this->connid;
			} else {
				if( $this->exception ) 
					throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
				else 
					trigger_error(mysql_error($this->connid),E_USER_ERROR);
			}
		} else {
			if( $this->exception ) 
				throw new Exception(mysql_error(),mysql_errno());
			else 
				trigger_error(mysql_error(),E_USER_ERROR);
		}
		
 	}
	
   /***
	* - @desc   : Connect
	* - @params : Array $params,Array $options
	* - @return : none
	*/
	public static function connect($params,$options) {
		if (!isset(self::$instance)) {
			self::$instance = new self($params,$options);
		}
		return self::$instance;
	}
	
   /***
	* - @desc   : Execute une requête SQL
	* - @params : String $sql
	* - @return : none
	*/
	public function Query($sql) {
		$this->sql = $sql;
		$query = mysql_query($sql,$this->connid);
		if( !$query ) {
			if( $this->exception ) 
				throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
			else 
				return false;
		} else {
			return $query;
		}
		
	}

   /***
	* - @desc   : Active ou désactive la validation automatique des requêtes
	* - @params : Bool $autocommit
	* - @return : Bool
	*/
	public function AutoCommit($autocommit = true) {
		$auto = ( $autocommit ) ? 1 : 0;
		$query = @mysql_query('SET autocommit = '.$auto);
		if( !$query ) {
			if( $this->exception ) 
				throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
			else 
				return false;
		} else {
			return true;
		}
	}
   
   /***
	* - @desc   : Demarre la transaction
	* - @params : None
	* - @return : Bool
	*/
	public function Begin() {
		$query = @mysql_query("BEGIN",$this->connid);
		if( !$query ) {
			if( $this->exception ) 
				throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
			else 
				return false;
		} else {
			return true;
		}
	}
	
   /***
	* - @desc   : Valide une transaction en cours
	* - @params : None
	* - @return : Bool
	*/
	public function Commit() {
		$query = @mysql_query("COMMIT",$this->connid);
		if( !$query ) {
			if( $this->exception ) 
				throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
			else 
				return false;
		} else {
			return $query;
		}
	}

   /***
	* - @desc   : Annulle une transaction en cours
	* - @params : None
	* - @return : Bool
	*/
	public function RollBack() {
		$query = @mysql_query("ROLLBACK",$this->connid);
		if( !$query ) {
			if( $this->exception ) 
				throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
			else 
				return false;
		} else {
			return $query;
		}
	}

   /***
	* - @desc   : Prepare une requête
	* - @params : String $query
	* - @return : Bool False || Statement
	*/
	public function prepare($query) {
		$stmt = uniqid(mysql_thread_id());
		$this->sql = $query;
    	$prep = sprintf('PREPARE `%s` FROM \'%s\'', $stmt, mysql_real_escape_string($query,$this->connid));
   		if( @mysql_query($prep)) {
        	return $stmt;
    	} else {
   			if( $this->exception ) 
				throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
			else 
				return false;
		}
		
	}

   /***
	* - @desc   : Execute une requête preparé
	* - @params : Array $varArray, Statement $stmt
	* - @return : BOOL False || QueryResult
	*/
	public function execute($varArray,$stmt) {
		foreach($varArray as $id => $val) {            
        	$key = sprintf('@`%s`', $id);
       		if( is_numeric($val)) {
            	$sf = '@`%s` = %s';
        	} else {          
            	$sf = '@`%s` = \'%s\'';
        	}
       		$sets[$key] = sprintf($sf, $id, $this->quote((string) $val));
    	}
		if( !empty($sets)) {
        	$set = sprintf('SET %s', implode(', ', $sets));
       		if( mysql_query($set,$this->connid) === false) {
            	if( $this->exception ) 
					throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
				else 
					return false;
        	}
       		$ext = sprintf('EXECUTE `%s` USING %s', $stmt, implode(', ', array_keys($sets)));
    	} else {
        	$ext = sprintf('EXECUTE `%s`', $stmt);
    	} 
		       
   		$query = mysql_query($ext,$this->connid);
		if( !$query ) {
			if( $this->exception ) 
				throw new Exception(mysql_error($this->connid),mysql_errno($this->connid));
			else 
				return false;
		} else {
			return $query;
		} 
		
	}

   /***
	* - @desc   : Protege les variables utilisés dans les requêtes
	* - @params : String $value, TYPE = PARAM_STR,PARAM_INT ...
	* - @return : value
	*/
	public function quote($value,$type=self::PARAM_STR) {
		switch($type) {
			case self::PARAM_INT :
				$value = intval($value);
			break;
			case self::PARAM_FLOAT :
				$value = (float) $value;
			break;
			case self::PARAM_BOOL :
				$value = (bool) $value;
			break;
			
			default:
				if( (function_exists("get_magic_quotes_gpc") && get_magic_quotes_gpc() ) || ini_get('magic_quotes_sybase') ) {
       	  	  		 $value = stripslashes($value);
 				}
				$value = mysql_real_escape_string(htmlentities($value, ENT_QUOTES, 'UTF-8', false),$this->connid);
			break;
		}
		return "'".$value."'";
	}

   /***
	* - @desc   : Fecth Mode Associatif
	* - @params : Resource query result
	* - @return : query result rows
	*/
	public function fetchAssoc($results) {
		return @mysql_fetch_assoc($results);
	}

   /***
	* - @desc   : Fecth Mode Object
	* - @params : Resource query result
	* - @return : query result rows
	*/
	public function fetchObject($results) {
		return @mysql_fetch_object($results);
	}

   /***
	* - @desc   : Fecth Mode NumRows
	* - @params : Resource query result
	* - @return : query result rows
	*/
	public function fetchRow($results) {
		return @mysql_fetch_row($results);
	}
	
   /***
	* - @desc   : Fecth Mode Array
	* - @params : Resource query result
	* - @return : query result rows
	*/	
	public function fetchArray($results) {
		return @mysql_fetch_array($results);
	}
   
   /***
	* - @desc   : Simule le FetchAll de PDO
	* - @params : Query result
	* - @return : Array $results
	*/
	public function fetchAll($result) {
		$results = array();
		while($row = @mysql_fetch_array($result) ) {
				$results[] = $row;
		}
		return $results;
	}
  	
   /***
	* - @desc   : Rettourne le nombre de rsultat d'une requête ou le nombre de champs affecter par une requête de type INSERT,UPDATE
	* - @params : Resource query result
	* - @return : Int numrows
	*/	public function rowCount($results) {
		if( strpos(strtoupper($this->sql),"SELECT") == 0 ) {
			return @mysql_num_rows($results);
		} else {
			return @mysql_affected_rows($this->connid);
		}
	}

   /***
	* - @desc   : Retourne l'id du dernier enregistrement
	* - @params : Void
	* - @return : Int id
	*/
	public function lastInsertId() {
		return @mysql_insert_id($this->connid);
	}

   /***
	* - @desc   : Librer les resultats de la requête 
	* - @params : results
	* - @return : Bool
	*/
	public function closeCursor($results) {
		return mysql_free_result($results);
			
	}

   /***
	* - @desc   : Erreur 
	* - @params : void
	* - @return : String errorInfo
	*/
	public function errorInfo() {
		return ( $this->connid ) ? mysql_error($this->connid): mysql_error();
	}
   
   /***
	* - @desc   : Erreur Code 
	* - @params : void
	* - @return : String errorCode
	*/
	public function errorCode() {
		return ( $this->connid ) ? mysql_errno($this->connid): mysql_errno();
	}
   
   /***
	* - @desc   : Fermeture de la connexion 
	* - @params : void
	* - @return : Bool
	*/
	public function close() {
		return ( $this->connid ) ? mysql_close($this->connid): mysql_close();
	}
 }
?>

 Conclusion

Toute remarque ou suggestion est la bienvenue

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip CLASS MYSQL EN PHP 5

 Sources de la même categorie

Source avec Zip ORM : DAO, ACTIVERECORD ET DBLIST par Reldan
Source avec une capture CET EXTRAIT PERMET D'AJOUTER DANS UN TABLEAU UNE AGRÉGATION ... par Denis007
EXPORT DE BASE AU FORMAT CSV par remib74
Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
[CRON] INSERT ON DUPLICATE KEY UPDATE par pierreSabatier

 Sources en rapport avec celle ci

REDIMENSIONNEMENT D'IMAGE PHP par JStevens
Source avec Zip Source avec une capture EL COYOTOS LIVRE D'OR PHP 5 par elcoyotos
Source avec Zip Source avec une capture PAGINATION JAVASCRIPT PHP MYSQL par cod57
Source avec Zip GERER UN ENTREPOT VIA PHP 5 MYSQL VERSION OBJET ( PDO) par fabienenvac
CLASSE DATABASE POUR CONNECTION ET MODIFICATION D'UNE BDD MY... par franco_se

Commentaires et avis

Commentaire de phpAnonyme le 10/09/2011 05:58:33

Avec un coup d'oeil rapide; Ta classe n'est pas vraiment intéressante dans le sens où celà ressemble plus à une translation des fonctions mysql_* en PHP>5. En somme les fonctions de ta classe existe déjà en natives. Peut-être que c'était le but ?

Commentaire de devil_may_cry le 10/09/2011 14:46:59

Merci d'avoir pris le temps de jeter un coup d'½il !
je suis peut être d'accord avec toi sur le faite que les fonctions existe en native mais le fait que la class n'est pas intéressante je ne crois pas qu'on est en phase sur ça puisque la class simplifie la gestion des requête préparer même si cela existe avec l'extension mysqli_* en plus d'offrir deux mode de gestion d'erreur (exception,warning)et met en évidence l'approche singleton.

Commentaire de cod57 le 10/09/2011 16:18:43

Bonjour
pourquoi n'utilises tu pas le constructeur en public ?
et passes tu par connect

Commentaire de devil_may_cry le 10/09/2011 16:32:41

si je passe le constructeur en public on pourra donc avoir plusieurs instance de la class en utilisant new ce qui faussera mon approche singleton qui est la pour éviter cela :)

Commentaire de phpAnonyme le 10/09/2011 16:48:25

Je ne vois pas en crois ta classe simplifie la gestion des requêtes préparés, puisque tu sembles te baser sur PDO et PDOSTATEMENT. Ce que je veux te faire comprendre c'est que tu réinventes PDO avec des fonctions mysql_*. D'où à mon sens il n'y a pas de grand intérêt. Je ne crache pas sur ton boulot, ce n'est pas mon genre, mais je ne comprend pas le pourquoi.

Commentaire de devil_may_cry le 10/09/2011 17:06:30

"Je ne crache pas sur ton boulot, ce n'est pas mon genre"
il y a pas de souci on est juste entrain de confronter nos deux point de vue il y a de mal en ça


une des raisons est qu'il s'avère que parfois certain hébergeur n'active pas l'extension PDO pour leur pack free ce qui est fréquent donc pour moi il ne s'agit plus dans ce cas ci de réinventer la roue mais plutôt une manière d'avoir une approche objet des fonctions native mysql_*

je comprend bien ton point de vue !!

Commentaire de cod57 le 10/09/2011 17:25:55

j'ai lu ça avant dans le manuel

http://www.php.net/manual/fr/language.oop5.patterns.php
Le pattern Singleton est l'un des plus controversés. Les critiques indiquent que le singleton crée un contexte global dans l'application et couple fortement le singleton à d'autres classes. Ceci mène vers des dépendances cachées et des effets de bord désagréables, le code devient ainsi plus difficile à maintenir et à tester.

Les critiques pointent aussi l'inutilité d'un singleton dans un environnement isolé comme PHP où les objets ne sont pas persistents entre les requêtes. Il est plus simple et propre de créer son graphe d'objets en utilisant des monteurs ou des fabriques, en début de requête.

Les singletons violent aussi plusieurs principes "SOLID" et la loi de Demeter. Les singletons ne peuvent être sérialisés. Il ne peuvent être surchargés (avant PHP 5.3) et ne seront pas nettoyés par le collecteur car une instance est toujours présente en mémoire, dans le singleton lui-même.

pensez vous que le singleton soit sur dans un wrapper quelconque ?

Commentaire de devil_may_cry le 10/09/2011 18:11:21

j'avais pas encore explorer son utilisation dans un wrapper donc je ne saurai en mesure de te donné une réponse sur le sujet

Commentaire de terreaultguy le 11/09/2011 15:15:07

Bonjour
La premiere de code est:

include 'config.php';

mais dans les explications ou le .zip ce fichier n'existe pas
Est-ce un générique ou est particulier a cette example.

Quand je récolte des exemples par d'autres les include sont souvent fournie

Merci,
Guy

Commentaire de tinalestate le 11/09/2011 18:21:17

Un bel exemple de savoir mais c se compliquer la vie ...
et, terreaultguy, config.ini c ton propre fichier où tu indiques login/ password de ta connexion Mysql à toi :))

Commentaire de devil_may_cry le 12/09/2011 01:48:51

désolé j'avait manqué cette partie :)
dans config.php il y'avait ca

$dbcfg['host'] = 'localhost';
$dbcfg['database'] = 'base';
$dbcfg['user'] = 'root';
$dbcfg['passsword'] = '';

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

statistiques ,graphique, php et mysql [ par mouss ] connaissez vous des exemples mettant en oeuvre une base de donnée mysql ,php permettant de créer des courbes, nuages de points sur une feuille html (p php et mysql [ par stephane ] bonjour,j'ai des pb d'acces aux base de donnees, je suis sur free donc le 'host' est ftpperso.free.fr enfin ca c'est bon j'ai bien mis mon login et pa php et mysql : les index s'affichent pas !!! [ par stephane ] Voila, j'utilise cette procédure pour afficher les index d'une table (je suis deja connecté à la base de donnees) :$mode représente la table$rep=@mysq Hébergement PHP et MySQL [ par Kimberly ] Forfaits d'hébergement PHP et MySQL- PHP nuke- Postnuke- Myphpnuke- Php Website- Boutique virtuelleNous installons le site pour vous gratuitement.Près fusion php-html-mysql : votre avis ? [ par skrol29 ] Bonjour,Je suis en train de terminer une classe PHP pour la fusion de page HTML avec variables PHP et données MySQL.Le principe : une page HTML modèle PB update table mysql ! [ par lolo ] Comment pourrai-je faire pour mettre à jour une table mysql par le biais d'un formulaire (parcourir ...*.cvs) et d'un fichier php d'update de table my Perdu avec mysql ... [ par guiguimac ] bonsoir !voici le message d'erreur qui me gêne :Warning: 0 is not a MySQL result index in your script on line 131en fait je lance ma page php avec la nbr de ligne d'une requete [ par eryk17 ] je voudrai recuperer le resultat d'une requete pour le foutre dans un bouton radio, pour cela il me faut connaitre le nombre de ligne de cette requete ARG ! > MySQL: Unable to save result set in ... [ par antares7364 ] Bonjour,Un problème est survenu dans une de mes tables MySQL :lorsque j'essaie d'en afficher le contenu avec PHPMyAdmin ou par unautre script PHP, MyS tableau php à partir de mysql [ par nissarte ] Salut à tousG cherché mais g rien trouvé...M'en voulez pas, je débute en php & mysql...Voila, je souhaite charger toutes les données d'un champ d'une


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales