/** * Préfixe de vos tables dans la base de donnée. */ public $prefixe; /** * Identifie de manière unique la connexion courante au serveur. * (Id est retourné par mysql_connect) */ public $link_id; public $query_result; /** * Permet de retourner le nombre de requête effectué. * Variable initialisé à 0 bien évidemment. */ public $nb_requete = 0;
function __construct($db_host, $db_username, $db_password, $db_name, $db_prefixe) {
// connexion à la base de donnée ,
// récupération de l'id de connexion si celle-ci a réussi.
$this->prefixe = $db_prefixe;
$this->link_id = @mysql_connect($db_host, $db_username, $db_password);
// si on a un ID de retour, on a bien une connexion au serveur donc on peut continuer en
// sélectionnant la base de donnée demandée.
if ($this->link_id) {
if (@mysql_select_db($db_name, $this->link_id))
// si la base existe, on retourne l'identifiant synonyme d'une connexion réussie.
return $this->link_id;
else // sinon on arrˆte tout et on retourne une erreur
die('Impossible de sélectionner la base de données: '.mysql_error());
}
else
die('Impossible de se connecter au serveur MySQL: '.mysql_error());
}
function select($fields = "*", $from = "", $where = "", $orderby = "", $limit = "") {
// execute une requête de type 'select' et retourne une ressource,
if (!$from) // si on a pas de donnée pour la variable $from, on retourne une erreur.
return false;
else {
$table = $from;
$where = ($where != "") ? "WHERE $where" : "";
$orderby = ($orderby != "") ? "ORDER BY $orderby " : "";
// si la variable $orderby est définie, on ajoute à la requête un champ ORDER BY.
$limit = ($limit != "") ? "LIMIT $limit" : "";
++$this->nb_requete; // on incrémente la variable pour le calcul du nombre de requête
return $this->r = mysql_query("SELECT $fields FROM $table $where $orderby $limit");
}
}
function requete($sql, $unbuffered = false) {
// exécution de la requête $sql
if ($unbuffered)
$this->query_result = @mysql_unbuffered_query($sql, $this->link_id);
else
$this->query_result = @mysql_query($sql, $this->link_id);
// si la requête s'est bien déroulé on incrémente le compteur de requête
if ($this->query_result) {
++$this->nb_requete;
// et on retourne l'identifiant de réussite de la requête
return $this->query_result;
}
else {
return false;
}
}
function delete($from,$where='',$fields='') {
// supprime un enregistrement de la table $from
if (!$from)
return false;
else {
$table = $from;
$where = ($where != "") ? "WHERE $where" : "";
// si la variable $where est définie, on ajoute à la requête un champ de type WHERE.
++$this->nb_requete;
// incrementation de la variable du nombre de requete
return $this-> r = mysql_query("DELETE $fields FROM $table $where");
}
}
function update($fields, $table, $where = "") {
if (!$table)
return false;
else {
if (!is_array($fields)) // on test si la variable n'est pas un tableau
$flds = $fields;
else { // on transforme le tableau en chaîne de caractère dont les champs sont séparés par une virgule.
$flds = '';
foreach ($fields as $key => $value) {
if (!empty ($flds))
$flds .= ",";
$flds .= $key . "=";
$flds .= "'" . $value . "'";
}
}
$where = ($where != "") ? "WHERE $where" : "";
// on ajoute un champ WHERE si la variable $where est définie.
++$this->nb_requete;
// incrementation de la variable qui permet de connaître le nombre de requête effectué.
return $this-> r = mysql_query("UPDATE $table SET $flds $where");
}
}
function insert($fields, $intotable, $fromfields = "*", $fromtable = "", $where = "", $limit = "") {
if (!$intotable)
return false;
else {
if (!is_array($fields))
$flds = $fields;
else {
$keys = array_keys($fields);
$values = array_values($fields);
$flds = "(" . implode(",", $keys) . ") " .
(!$fromtable && $values ? "VALUES('" . implode("','", $values) . "')" : "");
if ($fromtable) {
$where = ($where != "") ? "WHERE $where" : "";
$limit = ($limit != "") ? "LIMIT $limit" : "";
$sql = "SELECT $fromfields FROM $fromtable $where $limit";
}
}
++$this->nb_requete;
$rt = $this-> r = mysql_query("INSERT INTO $intotable $flds $sql");
$lid = $this->insert_id();
// utilisation de la fonction insert_id qui permet de recupere l'identifiant de la derniere requête de type insert.
return $lid ? $lid : $rt; // retourne l'etat de la derniere requete.
}
}
function getRow($ds, $mode = 'assoc') {
if ($ds) {
if ($mode == 'assoc') {
return mysql_fetch_assoc($ds);
}
elseif ($mode == 'num') {
return mysql_fetch_row($ds);
}
elseif ($mode == 'both') {
return mysql_fetch_array($ds, MYSQL_BOTH);
}
else {
echo("Type inconnu :($mode) Merci de spécifier un des trois modes suivant: 'assoc', 'num' ou 'both'.");
}
}
}
function insert_id() {
return ($this->link_id) ? @mysql_insert_id($this->link_id) : false;
}
function NbRequete() {
return $this->nb_requete;
}
function escape($str) {
if (function_exists('mysql_real_escape_string'))
return mysql_real_escape_string($str, $this->link_id);
else
return mysql_escape_string($str);
}
function LastError() {
return mysql_error();
}
function close() {
if ($this->link_id) {
if ($this->query_result)
// libère toute la mémoire et les ressources utilisées
@mysql_free_result($this->query_result);
// fermeture de la connexion<
return @mysql_close($this->link_id);
}
else
return false;
}
if (!function_exists('mysql_connect'))
exit('MySQL n\'est pas supporté. Consultez la documentation PHP ou contactez votre hébergeur');
11. Exemple d'utilisation
$db_host = "localhost"; $db_username = "root"; $db_password = ""; $db_name = "nom_db";// nom de la base de donnée $db_prefixe = ""; // préfixe des tables $db = new Mysql($db_host, $db_username, $db_password,$db_name, $db_password);
<?php require'conf/config.php'; ?>
<?php
$req = $db->select("email","commandes","","","");
?>
<?php $db->update(""mailto:email%3D'webi@wb.fr"email='webi@wb.fr'","commandes","id=7"); ?>
<?php $db->close(); ?>