dbx_query

(PHP 4 >= 4.0.6)

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

Description

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

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.

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 quelquechose d'utile ici
    // first, print out field names and types
    // then, draw a table filled with the returned field values
}
else if (
$result == 1 ) {
    echo(
"Requ&ecirc;te ex&eacute;cut&eacute;e correctement, mais pas de r&eacute;sultat.");
}
else {
    exit(
"La requ&ecirc;te a &eacute;chou&eacute;");
}

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_COLNAMES_UNCHANGED (disponible depuis PHP 4.3.0)

La casse du nom des colonnes retournée 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 :

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 colonne et de ligne.

$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 3. Listes les types et noms de colonnes avec dbplus

$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ésultat 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 4. Afficher le contenu d'une base avec dbplus

$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";

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

Voir aussi dbx_escape_string() et dbx_connect().