VULN_CHECK_0COQYTauto_free = $autofree; } // ouvre une connexion persistante et se connecte a la base desiree function connect($hote = "", $base = "", $util = "", $pass = "") { // verification $hote, $database, $login, $password if($hote != "")$this->host = $hote; if($base != "")$this->database = $base; if($util != "")$this->loging = $util; if($pass != "")$this->passwd = $pass; // ouverture de la connexion persistante if(($this->link_id = mysql_connect($this->host, $this->loging, $this->passwd)) == false) { echo mysql_error()."
"; $this->error = "impossible de creer une connexion persistante !"; return(0); } // selection de la base if(@mysql_select_db($this->database, $this->link_id) == false) { $this->error = "impossible de selectionner la base !"; return(0); } return($this->link_id); } // pour liberer la memoire de la derniere requete function free() { if(@mysql_free_result($this->query_id) == false) $this->error = "erreur lors de la tentative de liberation de memoire"; $this->query_id = 0; } // pour lancer une requete sur la connexion courante function query($query = "") { $rtval = 0; // pour tester si il existe une connexion if($this->link_id != 0) { // test si on doit liberer la memoire if($this->query_id != 0) { if($this->auto_free == 1) $this->free(); } if(($this->query_id = mysql_query($query, $this->link_id)) == false){ $this->error = mysql_error(); $this->error .= "
impossible de lancer la requete";} else { $rtval = $this->query_id; $this->row = 0; } } else $this->error = "impossible de lancer une requete, il n'existe pas de connexion !"; return($rtval); } // pour avancer d'un element dans le resultset function next_record() { $rtval = 0; if($this->query_id != -1) { // si il y a un index de resultat $this->record = @mysql_fetch_array($this->query_id); $this->row = $this->row + 1; // test validite $stat = is_array($this->record); if(!$stat && $this->auto_free) $this->free(); if($stat) $rtval = 1; } else $this->error = "impossible d'avancer le resultat, pas d'id de res !"; return($rtval); } // pour positionner le pointeur interne du resultset a l'endroit desire function seek($pos = 0) { $rtval = -1; if(@mysql_data_seek($this->query_id, $pos) != false) { $this->row = $pos; $rtval = $pos; } return($rtval); } // retourne le nombre de lignes dans le recordset // (uniquement apres un select) function num_rows() { return(@mysql_num_rows($this->query_id)); } // retourne le nombre de champs de l'enregistrement courant function num_fields() { return(@mysql_num_fields($this->query_id)); } // retourne le nombre de tuples affectes // (nb de lignes affectees apres un insert, update ou delete) // (!!! : si on fait un delete sur ts les enregistrements -> sans clause where // alors la fonction renvoie 0) function affected_rows() { return(@mysql_affected_rows($this->link_id)); } //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ // retourne l'element desire (indice ou nom du champ) de la ligne courante function f($col) { return($this->record[$col]); } // pour afficher l'elemnt desire de la ligne courante function p($col) { print $this->record[$col]; } // alias de num_rows() function nf() { return($this->num_rows()); } // pour afficher le resultat de num_rows() function np() { print $this->num_rows(); } } $db_s = new db(0); if(!@$db_s->connect($hote, $database, $loging, $password)) die($db_s->error); ?>