Logo classes.scriptsphp.org PHP

go to nav bar

mysql

Classe MySQL destinée à faire de l' abstraction de bdd (enre autres).

La classe MySQL reprend les principales fonctionnalités des fonctions PHP associées. Son but, n est donc pas de remplacer ces fonctions, mais de vous permettre , eventuellemnt, de faire de l' abstraction de base de donnée. Notemment grace a une classe PostgresSQL, qui devrait arriver prochainement .... La classe integre aussi la fonctionnalité de cache de donnée ainsi qu'une methode facilitant la manipulation de blobs. Les reglages du ramasse miette sont effectué ds la classe elle même avec la variable $Bdd->gc_time=86400 le chemin du repertoire de cache se gere de même avec $Bdd->cache_path='cache'. Lors de la mise en place de la classe penser a créer le répertoire de cache.

Les Méthodes

  • MySQL - Nouvelle Instance
  • connect - Connection et sélection de la Base
  • send_query - Envoyez une requete
  • num_rows - Nombre de résultat(s) retourné(s) par une requete
  • get_cached_data - Envoie une requete et met le resultat au cache
  • prepare_blob - Prepare un binaire, a être inséré dans une requête Mysql.

Exemples

  1. Exemple Minimal - Connection à la Base de donnée et selection de la base
  2. Envoi d' une requete
  3. Récupération et affichage des Résultats ARRAY (1)
  4. Récupération et affichage des Résultats ARRAY (2)
  5. Récupération et affichage des Résultats OBJET
  6. Libérer les résulats, et fermer la connexion
  7. Fonctionnement du cache de données
  8. Manipulation des blobs

La Source

<?php

class Mysql {
    var 
$host 'localhost';
    var 
$user 'root';
    var 
$pass '';
    var 
$base;
    var 
$connect_id 0;
    var 
$cache_path 'cache';
    var 
$gc_time=86400;
    var 
$error;
    
    
// PRIVATE : Constructeur initialise les parametre de la connexion
    
function Mysql($Host='localhost'$User='root'$Pass=''$Base='') {
        
$this->host=$Host;
        
$this->user=$User;
        
$this->pass=$Pass;
        
$this->base=$Base;
        
        require_once(
'gc.php');
        
$gcsql = new GC();
        
srand((double)microtime()*1000000);
        if (!
rand(0,99)) $gcsql->rungc($this->cache_path,$this->gc_time);
    }
    
    
// PRIVATE : connection à la DB
    
function connect($Host$User$Pass$Base) {
        
$this->connect_id mysql_connect($Host$User$Pass);
        if (
$this->connect_id) {
            if(
mysql_select_db($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->errormysql_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);
    }
    
    function 
get_array($query$mode='ASSOC') {
        switch(
$mode) {
            case 
'NUMERIC' :
            return @
mysql_fetch_array($queryMYSQL_NUM);
            break;
            case 
'BOTH' :
            return @
mysql_fetch_array($queryMYSQL_BOTH);
            break;
            case 
'ASSOC' :
            break;
            default :
            return @
mysql_fetch_assoc($query);
        }
    }
    
    
// PUBLIC : renvoi le msg d'erreur mysql
    
function return_error() {
        return @
mysql_error();
    }
    
    
// PUBLIC : ferme la connection;
    
function close() {
        return 
mysql_close($this->connect_id) ;
    }
    
    
// PUBLIC : vide les resultat des requete
    
function free_result() {
        return @
mysql_free_result($this->connect_id);
    }
    
    
// PUBLIC : execute une requete(SELECT) et renvoi le tableau des resultat via le cache
    
function get_cached_data($request,$time=0) {
        
$this->cachename=$this->cache_path.'/'.md5($request).'.cachesql';
        if ( 
file_exists($this->cachename) && filemtime($this->cachename) > (time() - $time)) {
            
$records unserialize(file_get_contents($this->cachename));
        } else {
            if (!(
$this->result=$this->Send_Query($request))) return FALSE;
            while (
$record mysql_fetch_array($this->resultMYSQL_ASSOC) ) {
                
$records[] = $record;
            }
            
$OUTPUT serialize($records);
            
$fp fopen($this->cachename,"wb");
            @
flock($fp,2);
            
fputs($fp$OUTPUT);
            @
flock($fp,3);
            
fclose($fp);
        }
        return 
$records;
    }
    
    
    
// PUBLIC : ajoute les slashe sql et C pour le stockage des BLOB
    
function prepare_blob($file) {
        
$blob file_get_contents($file);
        
$blob addslashes($blob);
        
$blob addcslashes($blob"\0");
        return 
$blob;
    }
}
?>

Merci de ne pas suivre ce lien emails.

0.0722s | «»
PHP powered