1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
|
<?php
/**
* Fichier sql.class.php
* Classe héritant de la classe php mysqli
**********************************************************************************
* Création le 23/10/2008
* Auteur : Anthony PAMART
* Dernière modification le 23/10/2008 par Anthony PAMART
*/
class sql extends MySQLi
{
/**
* DEFINITION DES VARIABLES INTERNES SUPPPLEMENTAIRES
*/
//hote de la base de données
private $host;
//login de connexion à la base de données
private $login;
//password de la connexion à la base de données
private $passwd;
//base de données à utiliser
private $db;
//variable pour savoir si on est connecté ou pas
private $connected;
/**
* CONSTRUCTEUR
* il définit les variables $host, $login, $passwd et $db afin de créer l'objet (celles-i peuvent être modifiées lors de la création de la base)
* il utilise le constructeur de la classe MySQLi
*
* @param string $host host du serveur base de données
* @param string $login login pour la connexion au serveur base de données
* @param string $passwd mot de passe pour la connexion au serveur base de données
* @param string $db base de données à utiliser
*/
public function __construct($host = '', $login = '', $passwd = '', $db = '')
{
//on récupère les données de connexion
$this->host = $host;
$this->login = $login;
$this->passwd = $passwd;
$this->db = $db;
//on réutilise le code de la classe mère
parent::__construct($host, $login, $passwd, $db);
if ($this->connect_errno) //on regarde si il y a une erreur de connexion à la base de données
{
echo '<p>Erreur lors de la connexion à la base de données : '.$this->connect_error.'</p>'; //si il y en a une on afficle l'erreur
$this->connected = FALSE; //on met connected à false
}
else //si il n'y a pas d'erreur de connexion on met connected à TRUE
{
$this->connected = TRUE;
}
}
/**
* RECUPERATION D'UNE REQUETE DYNAMIQUE
* la fonction récupère la requête dynamique au format sprintf ainsi que la variable ou le tableau de variables
* lors de l'appel de la fonction, on précise si on veut échapper les variables chaines ou pas (0 pour non, 1 pour oui)
*
* @param string $request requête simple ou au format sprintf
* @param array $dvars tableau des variables à insérer dans la requête
* @param bool $escape_strings booléen indiquant si il faut échapper les variables ou non
*/
public function do_query($request = '', $dvars = array(), $escape_strings = FALSE)
{
if (empty($request)) //on regarde si on a une requête ou non
{
//on affiche une erreur si la requête est vide
echo '<p>Aucune requête à exécuter ...</p>';
//on renvoie FALSE
return FALSE;
}
else
{
if (count($dvars) > 0) //on regarde si on a des variables
{
if ($escape_strings) //si $escape_strings est à 1 on appelle la fonction escape_vars pour protéger la requête des diverses injections possibles
{
$dvars = escape_vars($dvars);
}
//on crée la requête
$query = vsprintf($request, $dvars);
//on exécute la requête
$result = $this->query($query);
}
else
{
//sinon on exécute la requête directement
$result = $this->query($request);
}
if ($this->errno) //on regarde si on a eu une erreur lors de l'exécution de la requête
{
// on affiche l'erreur
echo '<p>Il y a eu une erreur lors de l\exécution de la requête : '.$this->error.'</p>';
//on renvoie false
return FALSE;
}
else
{
//on retourne le résultat de la requête
return $result;
}
}
}
/**
* ACTION SUR LES MAGIC QUOTES
* la fonction parcourt le tableau des variables et supprime les anti slash d'une chaine
* Elle applique également la fonction real_escape_string issue de la classe mère
*
* @param array $dvars tableau contenant les variables à échapper avant la requête
*/
private function escape_vars($dvars)
{
if(get_magic_quotes_gpc())
{
for ($i = 0; $i < count($dvars); $i++)
{
$dvars[$i] = stripslashes($dvars[$i]);
$dvars[$i] = $this->real_escape_string($dvars[$i]);
}
}
return $dvars;
}
/**
* FERMETURE DE LA CONNEXION
* La fonction tente de fermer la connexion à la base de données
* Elle renvoie TRUE su la déconnexion a réussie, FALSE sinon
*/
public function deconnexion()
{
if ($this->close()) //si on réussit à fermer la connexion à la base de données, on met connected à FALSE
{
$this->connected = FALSE;
return TRUE;
}
else //sinon on affiche une erreur
{
echo '<p>Erreur lors de la déconnexion ... </p>';
return FALSE;
}
}
/**
* VERIFICATION DE LA CONNEXION
* la fonction renvoie simplement la valeur de connected
*/
public function is_connected()
{
return $this->connected;
}
}
?> |
Partager