Manuel PHP
Précédent |  | Suivant

# dbx_query

(PHP 4 >= 4.0.6, PHP 5)

dbx_query -- Envoie une requête et lit tous les résultats

## Description

object dbx_query ( object link_identifier, string sql_statement [, int flags])

dbx_query() retourne un objet dbx_result_object ou `1` en cas de succès (un objet de résultat ne sera retourné que pour les requêtes SQL qui retournent un résultat), ou 0 en cas d'erreur. L'objet résultant n'est retourné que si la requète donnée par `sql_statement` produit un jeu d'enregistrements. (i.e. une requète SELECT, même si le résultat est vide).

Exemple 1. Comment gérer la valeur retournée par dbx_query()

`<?php
$link = dbx_connect(DBX_ODBC, "", "db", "username", "password")
or die("Impossible de se connecter");
$result = dbx_query($link, 'SELECT id, parentid, description FROM table');
if ( is_object($result) ) {
// ... Faire quelque chose d'utile ici
// premièrement, afficher les noms des champs et leurs types
// et tracer un tableau avec les valeurs retournées
} else {
exit("La requête a échoué");
}
dbx_close($link);
?>`

Le paramètre `flags` sert à contrôler la quantité d'informations retournée. Il peut être n'importe quelle combinaisons par l'opérateur OR des constantes ci-après. Les constantes remplacent la configuration du `php.ini`.

`DBX_RESULT_INDEX`

  Ce paramètre est toujours activé, c'est à dire que l'objet retourné dispose du membre data qui est un tableau à deux dimensions, indexé numériquement. Par exemple, dans l'expression `data[2][3]` `2` représente le numéro de ligne et `3` représente le numéro de colonne. Les premières lignes et colonnes sont indexées à 0.

  Si `DBX_RESULT_ASSOC` est aussi spécifié, l'objet retourné contient en plus les informations liées à `DBX_RESULT_INFO`, même si il n'a pas été spécifié.

`DBX_RESULT_INFO`

  Cette option fournit des informations sur les colonnes, comme les noms des champs et leur type.

`DBX_RESULT_ASSOC`

  Cette option fait que la valeur des champs peut être accessible avec le nom de la colonne, utilisé comme clé dans le tableau du membre data.

  Les résultats ainsi associés sont des références sur les valeurs identifiées par les index numériques, ce quie fait que modifier `data[0][0]` fait que `data[0]['nom_de_la_premiere_colonne']` sera aussi modifié.

`DBX_RESULT_UNBUFFERED` (CVS uniquement)

  Ce flag ne crée pas de propriété data et la propriété rows sera initialement positionnée à 0. Utilisez ce flag pour des jeux d'enregistrements importants et utilisez dbx_fetch_row() our retrouver le résultat ligne par ligne.

  dbx_fetch_row() retournera les lignes qui se conforment au flag de la requète. Par ailleurs, celà mettera à jours les lignes à chaque appel de la fonction.

`DBX_COLNAMES_UNCHANGED` (disponible depuis PHP 4.3.0)

  La casse du nom des colonnes retournées ne sera pas modifiée.

`DBX_COLNAMES_UPPERCASE` (disponible depuis PHP 4.3.0)

  Les noms de colonnes seront mis en majuscules.

`DBX_COLNAMES_LOWERCASE` (disponible depuis PHP 4.3.0)

  Les noms de colonnes seront mis en minuscules.

Notez que `DBX_RESULT_INDEX` est toujours active, indépendemment de la valeur de `flags`. Cela signifie que seules les combinaisons suivantes sont utiles :

- `DBX_RESULT_INDEX`

- `DBX_RESULT_INDEX` | `DBX_RESULT_INFO`

- `DBX_RESULT_INDEX` | `DBX_RESULT_INFO` | `DBX_RESULT_ASSOC` - c'est la valeur par défaut, si `flags` est omis.

Un objet dbx_result_object a 5 membres (éventuellement 4, suivants les valeurs de `flags`) :

handle

  Ceci est une ressource représentant la connexion à la base de données, et il peut être utilisé (si nécessaire) avec les fonctions spécialisées de la base.

  Exemple 2. Exemple avec dbx_query()

  `<?php $result = dbx_query($link, "SELECT id FROM table"); mysql_field_len($result->handle, 0); ?>`

cols et rows

  Ces deux membres contiennent respectivement le nombre de colonnes et de lignes.

  Exemple 3. Nombre de lignes et colonnes avec dbx_query()

  `<?php $result = dbx_query ($link, 'SELECT id FROM table'); echo $result->rows; // nombre de lignes echo $result->cols; // nombre de champs ?>`

info (optionnel)

  Ce membre est retourné uniquement si `DBX_RESULT_INFO` ou `DBX_RESULT_ASSOC` sont spécifiés dans le paramètre `flags`. C'est un tableau à deux dimensions, avec deux lignes (`name` et `type`) pour lire les informations de colonnes.

  Exemple 4. Listes les types et noms de colonnes avec dbplus

  `<?php $result = dbx_query ($link, 'SELECT id FROM table', DBX_RESULT_INDEX | DBX_RESULT_INFO); for ($i = 0; $i < $result->cols; $i++ ) { echo $result->info['name'][$i] . "\n"; echo $result->info['type'][$i] . "\n"; } ?>`

data

  Ce membre contient les résultats obtenus, possiblement associés avec le nom de colonne, en fonction de la valeur du paramètre `flags`. Si `DBX_RESULT_ASSOC` est activé, il est possible d'utiliser aussi `$result->data[2]["nom_de_la_colonne"]`.

  Exemple 5. Afficher le contenu d'une base avec dbplus

  `<?php $result = dbx_query ($link, 'SELECT id, parentid, description FROM table'); echo "<table>\n"; foreach ( $result->data as $row ) { echo "<tr>\n"; foreach ( $row as $field ) { echo "<td>$field</td>"; } echo "</tr>\n"; } echo "</table>\n"; ?>`

  Exemple 6. Comment utiliser les requètes UNBUFFERED

  `<?php $result = dbx_query ($link, 'SELECT id, parentid, description FROM table', DBX_RESULT_UNBUFFERED); echo "<table>\n"; while ($row = dbx_fetch_row($result)) { echo "<tr>\n"; foreach ($row as $field) { echo "<td>$field</td>"; } echo "</tr>\n"; } echo "</table>\n"; ?>`

> Note : Reportez-vous aussi à la documentation de la base de données que vous utilisez.

> Les noms des colonnes pour les requètes sur des bases de données Oracle sont retournés en minuscule.

Voir aussi dbx_escape_string() et dbx_connect().

Précédent | Sommaire | Suivant
dbx_fetch_row | Niveau supérieur | dbx_sort