Classe mysql php5

Soyez le premier à donner votre avis sur cette source.

Vue 9 236 fois - Téléchargée 467 fois

Description

Cette classe permet d'utiliser les fonctions mysql de la meme facon que mysqli, c'est a dire, sous forme d'objet. Pour utiliser cette classe, regarder la documentation PHP a propos de mysqli, cette classe fonctionne exactement pareil.
Necessite la classe de gestion d'erreur : http://www.phpcs.com/code.aspx?id=28249

Source / Exemple :


<?php
require_once('class.myexception.php');

class mysql
{
    protected $vars;

    public function __construct($host = 'localhost', $user = 'root', $password = '', $database = FALSE, $port = 3306)
    {
        $this->vars = array();

        $this->vars['config'] = array();
        $this->vars['config']['host']     = $host.':'.$port;
        $this->vars['config']['user']     = $user;
        $this->vars['config']['password'] = $password;
        $this->vars['config']['database'] = NULL;

        $this->vars['handle'] = @mysql_connect($host, $user, $password, TRUE);
            

        if ($database)
            $this->select_db($database);

        $this->vars['properties'] = array();
        $this->vars['properties']['client_info']      = @mysql_get_client_info();
        $buffer = explode('.', $this->vars['properties']['client_info']);
        $this->vars['properties']['client_version']   = $buffer[0]*10000+$buffer[1]*100+$buffer[2];
        $this->vars['properties']['host_info']        = @mysql_get_host_info($this->vars['handle']);
        $this->vars['properties']['protocol_version'] = @mysql_get_proto_info($this->vars['handle']);
        $this->vars['properties']['sqlstate']         = '';
        $this->vars['properties']['thread_id']        = @mysql_thread_id($this->vars['handle']);
        $this->vars['properties']['warning_count']    = 0;

        $this->vars['current_result'] = array();
        $this->vars['current_result']['handle'] = NULL;
        $this->vars['current_result']['errno']  = 0;
        $this->vars['current_result']['error']  = '';

        $this->vars['results'] = array();
    }

    public function __get($var)
    {
        switch ($var)
        {
            case 'affected_rows'    : return  mysql_affected_rows($this->vars['handle']);
            case 'client_info'      : return $this->vars['properties']['client_info'];
            case 'client_version'   : return $this->vars['properties']['client_version'];
            case 'errno'            : return $this->vars['current_result']['errno'];
            case 'error'            : return $this->vars['current_result']['error'];
            case 'field_count'      : return mysql_num_fields($this->vars['current_result']['handle']);
            case 'handle'           : return $this->vars['handle'];
            case 'host_info'        : return $this->vars['properties']['host_info'];
            case 'info'             : return mysql_info($this->vars['handle']);
            case 'insert_id'        : return mysql_insert_id($this->vars['handle']);
            case 'protocol_version' : return $this->vars['properties']['protocol_version'];
            case 'sqlstate'         : return $this->vars['properties']['sqlstate'];//---------
            case 'thread_id'        : return $this->vars['properties']['thread_id'];
            case 'warning_count'    : return $this->vars['properties']['warning_count'];
        }
    }

    public function change_user($user, $password, $database = NULL)
    {
        return mysql_change_user($user, $password, $database, $this->vars['handle']);
    }

    public function character_set_name()
    {
        return mysql_client_encoding($this->vars['handle']);
    }

    public function client_encoding()
    {
        return mysql_client_encoding($this->vars['handle']);
    }

    public function close()
    {
        return mysql_close($this->vars['handle']);
    }

    public function escape_sring($string)
    {
        return mysql_real_escape_string($string, $this->vars['handle']);
    }

    public function multi_query($query)
    {
        $query   = trim($query, '\r\n\t ;');
        $queries = array();
        while (FALSE !== strpos($query, ';'))
        {
            list($buffer, $query) = explode(';', $query, 2);
            if (strlen($query))
                $queries[] = $buffer;
            unset($buffer);
        }
        if (strlen($query))
            $queries[] = $query;
        $this->vars['results'] = array();
        foreach ($queries as $query)
        {
            $result =& $this->vars['results'][];
            if (FALSE === ($buffer = @mysql_query($query, $this->vars['handle'])))
                $this->vars['properties']['warning_count']++;
            $result['handle'] = $buffer;
            $result['errno']  = mysql_errno($this->vars['handle']);
            $result['error']  = mysql_error($this->vars['handle']);
        }
        $this->next_result();
        if (!$this->vars['current_result']['handle'])
            return FALSE;
        return TRUE;
    }

    public function more_results()
    {
        return isset($this->vars['results'][0]);
    }

    public function next_result()
    {
        if (!$this->more_results())
            return FALSE;
        $this->vars['current_result'] = array_shift($this->vars['results']);
        return TRUE;
    }

    public function ping()
    {
        return @mysql_ping($this->vars['handle']);
    }

    public function real_escape_sring($string)
    {
        return mysql_real_escape_string($string, $this->vars['handle']);
    }

    public function query($query)
    {
        $this->vars['results'] = array();
        if (FALSE === ($buffer = @mysql_query($query, $this->vars['handle'])))
            $this->vars['properties']['warning_count']++;
        $this->vars['current_result']['handle'] = $buffer;
        $this->vars['current_result']['errno']  = mysql_errno($this->vars['handle']);
        $this->vars['current_result']['error']  = mysql_error($this->vars['handle']);
        if (!$buffer)
            return FALSE;
        return new mysql_result($buffer);
    }

    public function select_db($database)
    {
        if (!@mysql_select_db($database, $this->vars['handle']))
            return FALSE;
        $this->vars['config']['database'] = $database;
        return TRUE;
    }

    public function store_result()
    {
        if (FALSE === $this->vars['current_result']['handle'])
            return FALSE;
        return new mysql_result($this->vars['current_result']['handle']);
    }

    public function use_result()
    {
        return $this->store_result();
    }
}

class mysql_result
{
    public $vars;

    public function __construct($handle)
    {
        $this->vars                  = array();
        $this->vars['current_field'] = NULL;
        $this->vars['field_count']   = mysql_num_fields($handle);
        $this->vars['handle']        = $handle;
        $this->vars['lenghts']       = FALSE;
        $this->vars['num_rows']      = mysql_num_rows($handle);
    }

    public function __get($name)
    {
        switch ($name)
        {
            case 'current_field' : return $this->vars['current_field'];
            case 'field_count'   : return $this->vars['field_count'];
            case 'lenghts'       : return $this->vars['lenghts'];
            case 'num_rows'      : return $this->vars['num_rows'];
        }
    }

    public function close()
    {
        return mysql_free_result($this->vars['handle']);
    }

    public function data_seek($rows = 1)
    {
            return @mysql_data_seek($this->vars['handle'], $rows);
    }

    public function fetch_array($result_type = MYSQL_BOTH)
    {
        $result = mysql_fetch_array($this->vars['handle'], $result_type);
        $this->vars['lenghts'] = mysql_fetch_lengths($this->vars['handle']);
        return $result;
    }

    public function fetch_assoc()
    {
        $result = mysql_fetch_assoc($this->vars['handle']);
        $this->vars['lenghts'] = mysql_fetch_lengths($this->vars['handle']);
        return $result;
    }

    public function fetch_field()
    {
        if (!($buffer = mysql_fetch_field($this->vars['handle'])))
            return FALSE;
        if (!isset($this->vars['current_field']))
            $this->vars['current_field'] = 0;
        else
            $this->vars['current_field']++;
        return $buffer;
    }

    public function fetch_field_direct($id)
    {
        if(!$this->field_seek($id))
            return FALSE;
        return mysql_fetch_field($this->vars['handle']);
    }

    public function fetch_fields()
    {
        $fields = array();
        while ($buffer = $this->fetch_field())
            $fields[] = $buffer;
        return $fields;
    }

    public function fetch_object()
    {
        $result = mysql_fetch_object($this->vars['handle']);
        $this->vars['lenghts'] = mysql_fetch_lengths($this->vars['handle']);
        return $result;
    }

    public function fetch_row()
    {
        $result = mysql_fetch_row($this->vars['handle']);
        $this->vars['lenghts'] = mysql_fetch_lengths($this->vars['handle']);
        return $result;
    }

    public function field_seek($field = 0)
    {
        if (@mysql_field_seek($this->vars['handle'], $field))
            return FALSE;
        $this->vars['current_field'] = $field;
        return TRUE;
    }
}
?>

Conclusion :


Si vous avez des commentaires ou des suggestions, n'hesitez pas.

Si vous souhaitez mettre une bonne note a cette source n'hesitez pas non plus. lol

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

nicolas66
Messages postés
116
Date d'inscription
mercredi 25 décembre 2002
Statut
Membre
Dernière intervention
4 janvier 2009
-
Rien n'empeche de déclarer une variable avec un type ...
Gorrk
Messages postés
97
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
26 avril 2007
-
Désolé, c'était effectivement du à une problème de programmation.
Gorrk
Messages postés
97
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
26 avril 2007
-
ne se charge pas, pardon. lol
Gorrk
Messages postés
97
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
26 avril 2007
-
Je viens de remarquer quelque chose de bizarre et je voudrais savoir si c seulement sur mon site ou si c'est un bug de php : la classe mysql ne ce charche pas automatiquement avec __autoload().

Est ce que ca fait la même chose chez vous ?
Gorrk
Messages postés
97
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
26 avril 2007
-
C'est bon, le zip a ete mis a jour, il contient la classe et un fichier d'exemple.

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.