Cloner de la classe MySQLi..
Bonjour,
MySQLi est une extension de PHP voir ici : http://www.php.net/mysqli
Ne pouvant pas intégrer cette extension, je veux faire une class similaire (voir ci-dessous)
Mais j'ai pas du tout l'habitude de l'objet sous PHP (je m'en veux), et j'aimerai pouvoir faire çà:
Code:
1 2 3 4 5 6
| $db = new mysqli($BD_serveur, $BD_utilisateur, $BD_motDePasse, $BD_base);
$request = 'SELECT * FROM user;';
$result = $db->query($request);
while ($row = $result->fetch_assoc()) {
....
} |
Le problème est avec $row = $result->fetch_assoc()
Avec MySQLi, on écrit exactement comme cela...
Mais j'ai de la buée devant les yeux et je sais pas ce que je dois modifier dans la class...
Merci d'avance pour ce coup de pouce et de vos explication!
Code:
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
| <?php
class mysqli {
// Définition des variables internes
var $_con = 0;//Pour la connexion
var $_res = 0;//Pour le resultat
var $_res_data = Array(); // Resultat
var $_nbres = 0; //Nombre de réponse
var $_err = ""; // Pemet l'affichage des erreurs
var $_debug_sql = 0; //Pour le debug :)
//Construteur de la classe
function mysqli($_host,$_user="www",$_password="",$_db) {
// Se connect en mode persistent et n'affiche pas les erreurs (@ devant la fonction)
$this->_con = @mysql_pconnect($_host, $_user, $_password) or die("Impossible de se connecter a $_host");
mysql_select_db($_db) or die("Impossible d'ouvrir la base de donnee $_db");
}
//Active le debug
function setDebug() {
$this->_debug_sql = 1 ;
echo "debug Activé<br>";
}
//Execute un requete
function query($_sql) {
if($this->_debug_sql) echo "Requete : $_sql <br>";
mysql_free_result ($this->_res);//Dans le cas ou d'autre requete on déja été effectué
$this->_res=@mysql_query($_sql,$this->_con);
if(!$this->_res) {//Erreur
$this->_err = "Erreur sur la requete : $_sql <br>Réponse : ".mysql_error()."<br>";
if($this->_debug_sql) echo $_err;//On affiche l'erreur
} else if(!$_nbres = mysql_num_rows($this->_res)) return 0;//S'il n y a pas de résultat
else if($this->_debug_sql) echo "Nombre de réponse : $_nbres<br>";// Si il y en a alors on affiche le nombre
else return $this->_res;
}
//Recupere le resultat d'une ligne
function fetch_assoc() {
if(!$this->_res) return 0;//Erreur de la requete
$this->_res_data=mysql_fetch_array($this->_res);//On met le resultat d'une ligne dans un tableau
return $this->_res_data;
}
//Affiche la valeur d'un champ
function field($f) {
return($this->_res_data[$f]);
}
//Recupère le nom des champs
function getInfoTable() {
if(!$this->_res) return 0;
$_nbfield = mysql_num_fields($this->_res);//Nombre de champs de la requete
if(!$_nbfield) $this->_err = "Erreur lors du comptage de champ ".mysql_error()."<br>";
if($this->_debug_sql)
if(!$_nbfield) echo $this->_err;
else echo "Nombre de champs : $_nbfield <br>";
for($zz=0;$zz<$_nbfield;$zz++) $_fields[]=@mysql_field_name($this->_res,$zz);
return $_fields;
}
}
?> |