DB_common::getAssoc() -- Récupère le résultat dans un tableau
Description
Exécute la requête et met la totalité du résultat
dans un tableau associatif et libère le résultat.
Si le résultat contient plus de deux colonnes, les valeurs seront
un tableau des valeurs allant des colonnes 2 à n. Si le résultat ne
contient que deux colonnes, la valeur retournée est un scalaire
avec la valeur de la seconde colonne (sauf si vous forcez l'obtention
d'un tableau avec la paramètre $force_array).
Paramètres
- chaîne de caractères
$query
la requête SQL à préparer
- booléen
$force_array
utilisé seulement si la requête retourne exactement deux colonnes.
Si TRUE, les valeurs du tableau retourné seront des tableaux à
un élément au lieu de scalaires.
- mixed
$params
tableau, chaîne ou données numériques à
ajouter à la requête préparée.
Le nombre d'éléments passés doit correspondre
à celui des marqueurs dans la requête
préparée : un marqueur pour les scalaires ou un
marqueur par élément du tableau pour un tableau.
Si ce paramètre est fourni,
prepare()/
execute() sont utilisées.
- entier
$fetchmode
le mode de récupération à utiliser.
Par défaut, c'est DB_FETCHMODE_DEFAULT,
qui demande à la méthode d'utiliser le mode de récupération
courant de DB.
Le mode de récupération courant de DB peut être modifier
en utilisant
setFetchMode().
Les valeurs possibles sont :
DB_FETCHMODE_ORDERED
DB_FETCHMODE_ASSOC
DB_FETCHMODE_OBJECT
- booléen
$group
si TRUE, les valeurs du tableau retournées sont enveloppés
dans un autre tableau.
Si la même valeur de clef (dans la première colonne)
se répète, les valeurs seront ajoutées à la fin de
ce tableau, au lieu d'écraser les valeurs existantes.
Valeur retournée
array - tableau associatif avec les résultats de
la requête ou un objet DB_Error en cas d'erreur.
Valeurs renvoyées
Tableau 34-1. Valeurs PEAR_Error possibles
Code erreur | Message erreur | Raison | Solution |
---|
DB_ERROR_INVALID |
invalid
|
La requête SQL à préparer n'est pas valide.
|
Voyez la
documentation de prepare(),
si vous voulez utiliser une requête SQL avec des marqueurs.
|
DB_ERROR_MISMATCH |
mismatch
|
Le nombre de paramètres ne correspond pas au nombre de marqueurs
dans la requête préparée.
|
Vérifiez le nombre de marqueurs dans la requête
prepare() passée à
$query. Il doit être égal au nombre
d'entrées passées à
$params.
|
DB_ERROR_NODBSELECTED |
no database selected
|
Aucune base de données n'a été sélectionnée.
|
Vérifiez le DSN
dans
connect().
|
DB_ERROR_TRUNCATED |
truncated
|
Le résultat contient moins de deux colonnes.
|
Vérifiez la requête SQL ou choisissez une autre fonction
get*().
|
tout autre code erreur | |
Erreur spécifique à la base de données.
|
Vérifiez la section spécifique à la base de
données dans le
manuel PHP
pour trouver la raison de cette erreur. Dans la plupart des cas, il
s'agit d'une requête mal formée. Comme l'utilisation de LIMIT dans
une requête envoyée à une base de données
Oracle.
|
Note
Cette fonction ne peut pas être appelée de façon statique.
Exemple
Tous les exemples utilisent les données suivantes :
INSERT INTO foo VALUES ('Juan', 5, '1991-01-11 21:31:41');
INSERT INTO foo VALUES ('Kyu', 10, '1992-02-12 22:32:42');
INSERT INTO foo VALUES ('Kyu', 15, '1993-03-13 23:33:43'); |
Le résultat a deux colonnes
Lorsque vous utilisez getAssoc() pour récupérer le résultat
qui a deux colonnes et
$force_array = FALSE (par défaut),
changer $fetchmode n'aura aucun effet sur le format
du tableau résultant.
Exemple 34-1.
Exemple avec getAssoc() dans son mode par défaut
<?php
// On suppose que $db est un objet DB valide...
$data =& $db->getAssoc('SELECT cf, df FROM foo');
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
Affichera :
Array
(
[Juan] => 1991-01-11 21:31:41
[Kyu] => 1993-03-13 23:33:43
) |
|
Exemple 34-2.
Utilisation de getAssoc() avec
$group = TRUE
<?php
// On suppose que $db est un objet DB valide...
$data =& $db->getAssoc('SELECT cf, df FROM foo',
false, array(), DB_FETCHMODE_ORDERED, true);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
Affichera :
Array
(
[Juan] => Array
(
[0] => 1991-01-11 21:31:41
)
[Kyu] => Array
(
[0] => 1992-02-12 22:32:42
[1] => 1993-03-13 23:33:43
)
) |
|
Exemple 34-8.
Utilisation de getAssoc() avec
$force_array = TRUE,
$fetchmode =
DB_FETCHMODE_OBJECT
et $group = TRUE
<?php
// On suppose que $db est un objet DB valide...
$data =& $db->getAssoc('SELECT cf, df FROM foo',
true, array(), DB_FETCHMODE_OBJECT, true);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
Affichera :
Array
(
[Juan] => Array
(
[0] => stdClass Object
(
[cf] => Juan
[df] => 1991-01-11 21:31:41
)
)
[Kyu] => Array
(
[0] => stdClass Object
(
[cf] => Kyu
[df] => 1992-02-12 22:32:42
)
[1] => stdClass Object
(
[cf] => Kyu
[df] => 1993-03-13 23:33:43
)
)
) |
|
Le résultat a plus de deux colonnes
Exemple 34-9.
Utilisation de getAssoc() avec
$fetchmode =
DB_FETCHMODE_ORDERED
<?php
// On suppose que $db est un objet DB valide...
$data =& $db->getAssoc('SELECT cf, nf, df FROM foo',
false, array(), DB_FETCHMODE_ORDERED);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
Affichera :
Array
(
[Juan] => Array
(
[0] => 5
[1] => 1991-01-11 21:31:41
)
[Kyu] => Array
(
[0] => 15
[1] => 1993-03-13 23:33:43
)
) |
|
Exemple 34-10.
Utilisation de getAssoc() avec
$fetchmode =
DB_FETCHMODE_ASSOC
<?php
// On suppose que $db est un objet DB valide...
$data =& $db->getAssoc('SELECT cf, nf, df FROM foo',
false, array(), DB_FETCHMODE_ASSOC);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
Affichera :
Array
(
[Juan] => Array
(
[nf] => 5
[df] => 1991-01-11 21:31:41
)
[Kyu] => Array
(
[nf] => 15
[df] => 1993-03-13 23:33:43
)
) |
|
Exemple 34-11.
Utilisation de getAssoc() avec
$fetchmode =
DB_FETCHMODE_OBJECT
<?php
// On suppose que $db est un objet DB valide...
$data =& $db->getAssoc('SELECT cf, nf, df FROM foo',
false, array(), DB_FETCHMODE_OBJECT);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
Affichera :
Array
(
[Juan] => stdClass Object
(
[cf] => Juan
[nf] => 5
[df] => 1991-01-11 21:31:41
)
[Kyu] => stdClass Object
(
[cf] => Kyu
[nf] => 15
[df] => 1993-03-13 23:33:43
)
) |
|
Exemple 34-12.
Utilisation de getAssoc() avec
$fetchmode =
DB_FETCHMODE_ORDERED
et $group = TRUE
<?php
// Once you have a valid DB object named $db...
$data =& $db->getAssoc('SELECT cf, nf, df FROM foo',
false, array(), DB_FETCHMODE_ORDERED, true);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
Affichera :
Array
(
[Juan] => Array
(
[0] => Array
(
[0] => 5
[1] => 1991-01-11 21:31:41
)
)
[Kyu] => Array
(
[0] => Array
(
[0] => 10
[1] => 1992-02-12 22:32:42
)
[1] => Array
(
[0] => 15
[1] => 1993-03-13 23:33:43
)
)
) |
|
Exemple 34-13.
Utilisation de getAssoc() avec
$fetchmode =
DB_FETCHMODE_ASSOC
et $group = TRUE
<?php
// On suppose que $db est un objet DB valide...
$data =& $db->getAssoc('SELECT cf, nf, df FROM foo',
false, array(), DB_FETCHMODE_ASSOC, true);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
Affichera :
Array
(
[Juan] => Array
(
[0] => Array
(
[nf] => 5
[df] => 1991-01-11 21:31:41
)
)
[Kyu] => Array
(
[0] => Array
(
[nf] => 10
[df] => 1992-02-12 22:32:42
)
[1] => Array
(
[nf] => 15
[df] => 1993-03-13 23:33:43
)
)
) |
|
Exemple 34-14.
Utilisation de getAssoc() avec
$fetchmode =
DB_FETCHMODE_OBJECT
et $group = TRUE
<?php
// On suppose que $db est un objet DB valide...
$data =& $db->getAssoc('SELECT cf, nf, df FROM foo',
false, array(), DB_FETCHMODE_OBJECT, true);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?> |
Affichera :
Array
(
[Juan] => Array
(
[0] => stdClass Object
(
[cf] => Juan
[nf] => 5
[df] => 1991-01-11 21:31:41
)
)
[Kyu] => Array
(
[0] => stdClass Object
(
[cf] => Kyu
[nf] => 10
[df] => 1992-02-12 22:32:42
)
[1] => stdClass Object
(
[cf] => Kyu
[nf] => 15
[df] => 1993-03-13 23:33:43
)
)
) |
|