Classe xoopsDB
Connaissances requises : tableaux (associatifs, indexés)
et instructions mysql de Php.
A utiliser pour toutes les instructions relatives aux bases de données.
Assure la connection à  la base de données. Permet de bénéficier du mode debug sql.
N'a pas besoin d'être instanciée (fait par le fichier common.php),
sauf dans une classe.
Utilisation dans une fonction :
Si utilisation dans une fonction ne pas oublier la déclaration globale
:
function myfunction($param=0) {
global $xoopsDB;
Utilisation dans une classe :
Dans ce cas, doit être instanciée :
class myClass extends XoopsObject
{
var $db;
// constructor
function myClass($id=null)
{
$this->db =& Database::getInstance();
$this->initVar("id", XOBJ_DTYPE_INT, null, false);
// etc
prefix
Retourne le nom de la table passée en paramêtre
avec le prefixe choisi pour les tables de xoops (xoops par défaut)
prefix (string $tablename)
Exemple $xoopsDB->prefix('matable')
retournera 'xoops_matable'
query, queryF
Execution de la requête $sql passée en paramêtre
(chaine de caractêres).
prefix (string $sql, [int $limit = 0}, [int $start
= 0])
$sql |
string |
requête sql |
$limit |
int |
nombre de lignes à  retourner |
$start |
int |
offset : décalage par rapport au premier enregistrement |
Exemple
$sql = "SELECT cid, title, imgurl FROM ".$xoopsDB->prefix("mydownloads_cat")."
WHERE pid = 0 ORDER BY title";
$result=$xoopsDB->query($sql);
Remarque:
xoopsDB->query doit être utilisé par défaut,
xoopsDB->queryF ne devant être utilisé que pour les requêtes
INSERT ou UPDATE en cas de problême.
fetchRow fetchRow($result) équivaut à  mysql_fetch_row($result)
Retourne une ligne du résultat de la requête sous forme de
tableau indexé numériquement.
Retourne false si pas (ou plus) de ligne.
Exemples
- lorsque la requête ne retourne qu'une ligne (requête SELECT COUNT(*)
, requête avec clause WHERE sur l'id,....)
list($count) = $xoopsDB->fetchRow($result);
// ou encore
list($id, $name, $phone) = $xoopsDB->fetchRow($result);
- lorsque les résultats peuvent être exploités directement
dans une boucle
while (list($id, $name) = $xoopsDB->fetchRow($result))
{
echo 'Le nom est '.$name.' et le numero id '.$id.'<br>';
}
fetchArray
fetchArray($result) équivaut à  mysql_fetch_assoc($result)
Retourne une ligne du résultat de la requête sous forme d'un
tableau associatif, la clef étant le nom du champ.
Retourne false si pas (ou plus) de ligne.
Exemples
- lorsque la requête ne retourne qu'une seule ligne
$myrow = $xoopsDB->fetchArray($result))
{
$variable1 = $myrow['nom_champ1'];
$variable2 = $myrow['nom_champ2'];
}
- si une ligne ou plus
$i = 0;
while ( $myrow = $xoopsDB->fetchArray($result)
) {
$var_array[$i]['elt1'] = $myrow['nom_champ1'];
$var_array[$i]['elt2'] = $myrow['nom_champ2'];
$i++;
}
- ou encore
while ($myrow = $xoopsDB->fetchArray($result))
{
$var_array['element'][] = array('elt' => $myrow['nom_champ1'], 'elt2'
=> ($myrow['nom_champ2']));
}
fetchBoth
fetchBoth($result) équivaut à  mysql_fetch_array( $result, MYSQL_BOTH )
Retourne une ligne du résultat de la requête sous forme d'un
tableau associatif et indexé numériquement.
Retourne false si pas (ou plus) de ligne.
getInsertId
getInsertId($db) équivaut à  mysql_insert_id($db).
Retourne l'identifiant généré par la derniêre requête
INSERT
Exemple d'utilisation dans une fonction d'enregistrement dans la Bdd
function store($id=null) {
if (empty($id)) {
// si $id est vide c'est un nouvel enregistrement
$id = $xoopsDB->genId('matable_id_seq');
$sql = 'INSERT INTO '.$xoopsDB->prefix('matable').'
(id, title, message) VALUES ('.$id.', '.$xoopsDB->quoteString($title).',
'.$xoopsDB->quoteString($message).')';
} else {
// sinon c'est une mise à  jour
$sql = 'UPDATE '.$xoopsDB->prefix('matable').' SET title='.$xoopsDB->quoteString($title).',
message='.$xoopsDB->quoteString($message)..' WHERE id='.$id;
}
if (!$result = $xoopsDB->queryF($sql)) {
return false;
}
if (empty($id)) {
$id =$xoopsDB->getInsertId();
}
// on retourne false si la requête à  échoué,
sinon on retourne l'id
return $id;
}
getRowsNum getRowsNum($result)
équivaut à  mysql_num_rows($result)
Retourne le nombre de lignes d'un résultat provenant d'une requête
SELECT.
Permet de vérifier que l'on a au moins un résultat, ou de compter
le nombre de lignes.
Exemple de vérification d'au moins une ligne de résultat
if ( !$row = $xoopsDB->getRowsNum($result)
) {
redirect_header( "index.php", 1, _AM_NOEXIST ); // aucun résultat
à  afficher, on sort
exit();
}
getAffectedRows
getAffectedRows($db) équivaut à  mysql_affected_rows($db).
Retourne le nombre de lignes affectées par une requête INSERT,
DELETE ou UPDATE.
quoteString
Retourne la chaine de caractêres passée en paramêtre avec
des quotes simples. A utiliser systématiquement pour toute chaine
de caractêres avant enregistrement dans la Bdd.
Exemple dans une requête de mise à  jour
$sql = 'UPDATE '. $xoopsDB->prefix('xoopsheadline').'
SET headline_name='. $xoopsDB->quoteString($headline_name).',
freeRecordSet
freeRecordSet() équivaut à  mysql_free_result($result).
Libération de la mémoire utilisée par $result.
Mentionnée pour mémoire.
error
error() équivaut à  mysql_error(). Retourne le message d'erreur
généré par la derniêre requête, ou chaine
vide si pas d'erreur.
errno
errno() équivaut à  mysql_errno() Retourne le numéro de l'erreur
généré par la derniêre requête.
queryFromFile
Execute la requête
contenue dans le fichier $file passé en paramêtre (fichier dump
SQL).
Utilisé en particulier pour l'installation (ou l'upgrade) de Xoops. Voir
fichier install/index.php.
queryFromFile (string $file)
genId
Génération d'un id avant insertion d'un enregistrement.
Pour la compatibilité avec d'autres bases (pas d'action avec mysql :
auto-incrément)
genId(string $sequence)
$sequence |
string |
composée du nom de la table, de l'id
et de 'seq', séparation des mots par underscore |
Exemple
$headline_id = $xoopsDB->genId('xoopsheadline_headline_id_seq');
$sql = 'INSERT INTO '. $xoopsDB->prefix('xoopsheadline').' (headline_id,
....
Retour au sommaire
Version Xoops de référence: 2.06
C. Felix AKA theCat le 01/06/04
|