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