Interrogation sur les fonctions mysql

Le
CrazyCat
Bonjour à tous,

j'utilise fréquemment mysql mais il y a une chose que je ne comprends
pas bien. J'ai fait une petite classe pour simplifier mon utilisation
des bases (et avoir un pseudo recordset) mais selon le serveur que
j'utilise, le fonctionnement diffère.

La classe contient (j'élimine ce qui n'est pas intéressant pour mon
problème):

function query($query) {
$this->query = trim($query);
if ($this->resultid = mysql_query($this->query, $this->connectid)) {
if (preg_match('!^select!i', $this->query)) {
$this->_fetch_assoc();
} elseif (preg_match('!^(insert|replace)!i', $this->query)) {
$this->_insert_id();
}
$this->_count();
}
}

function _count() {
$this->num_rows = 0;
$this->affected_rows = 0;
if (isset($this->resultid)) {
if (preg_match('!^select!i',$this->query)) {
//$this->num_rows = mysql_num_rows($this->resultid);
$this->num_rows = mysql_num_rows();
} else {
//$this->affected_rows = mysql_affected_rows($this->resultid);
$this->affected_rows = mysql_affected_rows();
}
}
}

Vous pouvez noter les 2 lignes commentées dans la fonction _count(). Et
bien selon le serveur ou je suis, l'utilisation (ou pas) de
$this->resultid en paramêtre de mysql_num_rows() ou de
mysql_affected_rows() provoque une erreur.

Je ne remarque pas ce souci aujourd'hui, je vous rassure, mais
j'aimerais bien comprendre et surtout savoir comment faire pour avoir
une classe utilisable partout sans avoir à la modifier.

Merci bien.

--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces webmasters : http://www.c-p-f.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sylvain SF
Le #18122421
CrazyCat a écrit :
Bonjour à tous,



bonjour,

La classe contient (j'élimine ce qui n'est pas intéressant pour mon
problème):



j'ai toujours utilisé les variantes avec paramètres.

Vous pouvez noter les 2 lignes commentées dans la fonction _count(). Et
bien selon le serveur ou je suis, l'utilisation (ou pas) de
$this->resultid en paramêtre de mysql_num_rows() ou de
mysql_affected_rows() provoque une erreur.



soit c'est erratique pur, ce serait inattendu.
soit cela dépends de la version de PHP (ou de sa compile).
avez-vous noté des différences de versions entre les 2 configs ?

une classe utilisable partout sans avoir à la modifier.



ou peut être de manière déterministe vis a vis d'une info
serveur (telle la version de PHP ou apache ou mysqld ...)

Sylvain.
Pascal PONCET
Le #18122431
CrazyCat a écrit :
Vous pouvez noter les 2 lignes commentées dans la fonction _count(). Et
bien selon le serveur ou je suis, l'utilisation (ou pas) de
$this->resultid en paramêtre de mysql_num_rows() ou de
mysql_affected_rows() provoque une erreur.



Bonjour,

Je crois savoir que l'argument de type "result resource" est obligatoire
pour la fonction "mysql_num_rows()".
Par contre, il est facultatif avec la fonction "mysql_affected_rows()".

Si les fonctions sont bien utilisées et que l'erreur persiste sur un
serveur, il serait intéressant d'en connaître le message pour tenter de
comprendre.

Cordialement,
Pascal
Publicité
Poster une réponse
Anonyme