CrazyCat
2008-12-12 11:49:39 UTC
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.
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
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