Discussion:
Interrogation sur les fonctions mysql
(trop ancien pour répondre)
CrazyCat
2008-12-12 11:49:39 UTC
Permalink
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
Sylvain SF
2008-12-12 16:22:46 UTC
Permalink
Post by CrazyCat
Bonjour à tous,
bonjour,
Post by CrazyCat
La classe contient (j'élimine ce qui n'est pas intéressant pour mon
j'ai toujours utilisé les variantes avec paramètres.
Post by CrazyCat
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 ?
Post by CrazyCat
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
2008-12-12 16:22:46 UTC
Permalink
Post by CrazyCat
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

Loading...