Pour pouvoir récupérer les données depuis une ressource de résultats, vous pouvez utiliser une des méthodes suivantes : fetchInto() , fetchOne() . , fetchRow() . , fetchCol() . et fetchAll() . Toutes les méthodes ci-dessus, exceptée la méthode fetchOne(), retournent les données demandées dans un tableau (multi-dimentionnel), NULL s'il n'y a plus de données de disponible, ou un objet MDB_Error , si une erreur survient. Toutes les méthodes préfixés avec fetch() libèreront le jeu de résultats une fois exécutée.
Exemple 34-1. Récupération d'un jeu de résultats
|
Les modes de récupération supportés sont :
MDB_FETCHMODE_ORDERED (par défaut)
Les méthodes fetch*() retournent un tableau ordonné. L'ordre est fourni par la requête.
Exemple 34-2. Récupération d'un tableau ordonné
|
MDB_FETCHMODE_ASSOC
Retourne un tableau associatif avec les noms de colonnes comme clés du tableau
Exemple 34-3. Récupération d'un tableau associatif
|
Vous pouvez définir le mode de récupération pour chaque appel ou pour l'instance MDB dans sa totalité.
Exemple 34-4. À chaque appel
|
Exemple 34-5. Une fois par instance
|
Le système de récupération PEAR MDB supporte également un paramètre supplémentaire pour la requête de récupération. Donc, vous pouvez récupérer les lignes depuis un résultat par son numéro. Ceci est particulièrement utile si vous voulez uniquement voir le jeu d'un résultat complet (par exemple, lors de la pagination HTML), récupération des lignes dans un ordre particulier, etc.
Exemple 34-6. Récupération par numéro
|
Il est recommandé de terminer le jeu de résultats après l'exécution afin de préserver la mémoire. Utilisez la méthode freeResult() pour cela.
Exemple 34-7. Libération du jeu de résultats
|
MDB fournit des façons spéciales pour récupérer de l'information depuis une requête sans avoir besoin d'utiliser de méthodes fetch*() et de boucler les résultats.
queryOne() récupère le premier résultat de la première colonne d'une requête.
$numrows = $db->queryOne('select count(id) from clients'); |
queryRow() récupère la première ligne et la retourne sous la forme d'un tableau.
$sql = 'select name, address, phone from clients where id=1'; if (is_array($row = $db->queryRow($sql))) { list($name, $address, $phone) = $row; } |
queryCol() retourne un tableau contenant les données des colonnes sélectionnées. Elle accepte le numéro de la colonne à récupérer dans le second paramètre.
$all_client_names = $db->queryCol('SELECT name FROM clients'); |
$all_client_names = array('Stig', 'Jon', 'Colin'); |
getAll() récupère toutes les lignes retournées d'une requête. Cette méthode a également plusieurs paramètres qui vous permettent de retourner les données sous la forme d'un tableau associatif, en utilisant la première colonne en tant que clé.
$data = getAll('SELECT id, text, date FROM mytable'); /* Retournera : array( 1 => array('4', 'four', '2004'), 2 => array('5', 'five', '2005'), 3 => array('6', 'six', '2006') ) */ |
La famille de méthodes query*() effectue tout le sal boulot à votre place, c'est-à-dire : lancer la requête, récupérer les donées et libérer le résultat. Notez que toutes les fonctions PEAR MDB retournent un objet MDB_Error si une erreur survient.
Avec MDB, vous avez plusieurs amnières de récupérer des informations utiles depuis les résultats. Elles sont :
numRows() : Retourne le nombre total de lignes retourné depuis une requête "SELECT".
// Nombre de lignes echo $db->numRows($res); |
numCols() : Retourne le nombre total de colonnes retourné depuis une requête "SELECT".
// Nombre de colonnes echo $db->numCols($res); |
affectedRows() : Retourne le nombre de lignes affectées par une requête de manipulation de données ("INSERT", "UPDATE" ou "DELETE").
// Cette requête ne retourne pas d'objet résultat $db->query('DELETE * FROM clients'); echo 'J\'ai effacé ' . $db->affectedRows() . ' clients.'; |
tableInfo() : Retourne un tableau associatif contenant les informations sur les champs retournés d'une requête "SELECT".
// Information sur la table print_r($db->tableInfo($res)); |
Précédent | Sommaire | Suivant |
Introduction - Requête | Niveau supérieur | Introduction - Séquences |