Bonjour,
je fais appel à vous car j'ai beau lire et relire mon code, je ne vois absolument pas pourquoi ca fait ca.
Je m'explique. J'ai une classe "query" qui sert a executer des requetes sql et a enregistrer le msg d'erreur si il y en a 1.
Le prob c'est qu'au niveau du mysql_error($this->db_link); Ca merde, il me dit que le link est pas valable, du moins a cet endroit la de la classe, hors, si je le teste dans le constructeur de la classe, il est valide! pourquoi d'une fonction a l'autre une variable changerait elle sans qu'on y apporte une modification??? Alors que c'est un attribut de la classe ya pas de raisons...
Bref voila ma classe :
Code :
- <?php
- class query {
- var $query;
- var $num_rows=0;
- var $error=NULL;
- var $result=NULL;
- var $db_link=NULL;
- // Constructeur
- function query($link, $q=NULL) {
- if($q) {
- $this->query=$q;
- $this->exec($this->query);
- }
- $this->db_link=&$link;
- // ICI $this->db_link valide
- }
- /* Execute une requete SQL et en retourne le résultats */
- function exec($q=NULL) {
- // ICI $this->db_link n'est plus valide !!!!!!!!!!!!!!!!!!!!!!
- if($q) $this->query=$q; // Si on recoit une nouvelle requete on la change
- if(!$res=@mysql_query($this->query, $this->db_link)) $this->error=mysql_error($this->db_link);
- else {
- $this->result=&$res;
- $this->num_rows=mysql_num_rows($this->result);
- }
- }
- /* Recois un indice et retourne l'enregistrement qui correspond au resultats, retourne false en cas d'erreur */
- function row($i=1) {
- $i--;
- if($i<0) return false;
- if(!@mysql_data_seek($this->result, $i)) return false;
- if(!$row=@mysql_fetch_object($this->result)) return false;
- return $row;
- }
- /* Cette fonction reinitialise toutes les variables de l'objet */
- function reset() {
- $this=new query($this->db_link);
- }
- }
- ?>
|
Pour verifier si le link est valide j'execute une petite requete avec mysql_query($req, $this->db_link);
Et donc a l'endroit commenté ca marche dans le constructeur, et pas dans la fonction exec().
C'est incohérent. Si qqun a une explication ou voit l'erreur......
Parce que moi là je sature
Merci
Message édité par Gat$ le 02-06-2005 à 19:13:37