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();