Archives du tag: class

[php mysql] class MySQL pour php

Une classe php pour les connexions MySQL

class Mysql {
    var $host;
    var $user;
    var $pass;
    var $base;
    var $connect_id = 0;
    var $error;
 
    // PRIVATE : Constructeur initialise les parametre de la connexion
    function Mysql() {
        $this->host = 'host';
        $this->user = 'user_name';
        $this->pass = 'password';
        $this->base = 'base_name';
    }
 
    // PRIVATE : connection à la DB
    function connect() {
        $this->connect_id = mysql_connect($this->host, $this->user, $this->pass);
        if ($this->connect_id) {
            if(mysql_select_db($this->base, $this->connect_id)){
                return $this->connect_id;
            }
            else return FALSE;
        }
        else return FALSE;
    }
 
    // PUBLIC : Envoi d'une requete a la DB
    function Send_Query($query) {
        if ( !$this->connect_id ) $this->connect($this->host,$this->user,$this->pass,$this->base);
        if ( $this->result_id = mysql_query($query, $this->connect_id) ) {
            $this->query = trim($query);
            $this->error = '';
            return $this->result_id;
        } else {
            $this->error= mysql_error();
            return FALSE;
        }
    }
 
    // PUBLIC : return the last auto increment insert ID, only use on MySQL
    function last_insert_id() {
        return @mysql_insert_id();
    }
 
    // PUBLIC : renvoi le nombre d'enregistrement affecté
    function num_rows() {
        if ( isset($this->result_id) ) {
            if ( preg_match('`^select`i',$this->query) ) return @mysql_num_rows($this->result_id);
            if ( preg_match('`^(insert|update|delete)`i',$this->query) ) return @mysql_affected_rows($this->result_id);
        } else {
            return count($this->records);
        }
    }
 
    function get_object($query) {
        return @mysql_fetch_object($query);
    }
 
    // PUBLIC : renvoi le msg d'erreur mysql
    function return_error() {
        return @mysql_error();
    }
 
    // PUBLIC : ferme la connection;
    function close() {
        @mysql_free_result($this->connect_id);
        return @mysql_close($this->connect_id) ;
    }
 
    // PUBLIC : vide les resultat des requete
    function free_result() {
        return @mysql_free_result($this->connect_id);
    } 
 
}

En utilisation, cela peut donner

// on délcare la classe
$bd = new MySQL();
 
// on crée une connection
$link = $bd -> connect();
 
// une requête SQL
$req = "SQL COMMAND";
 
// on envoi à la base
$res = $bd -> Send_Query($req, $link);
 
// sur une SELECT, on peut traiter le nombre de lignes retournées
if($bd->num_rows() == 0)
{
	// arf, aucune info trouvée dans la base
}
else
{
	// on fait un traitement sur les lignes trouvées si il y en a
	while($obj = $bd -> get_object($res))
	{
		// chaque élément est atteignable avec
		$obj->nom_de_la_colonne;
	}
}
 
// on ferme
$bd->close();