dbx_query

(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5, PECL dbx:1.1.0)

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

Description

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

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

Liste de paramètres

link_identifier

L'objet DBX retournée par la fonction dbx_connect()

sql_statement

La requête SQL.

flags

La colonne comparée

flags

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 s'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 qui fait que modifier data[0][0] fait que data[0]['nom_de_la_premiere_colonne'] sera aussi modifié.

DBX_RESULT_UNBUFFERED (PHP 5)

Cet option 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() pour retrouver le résultat ligne par ligne.

dbx_fetch_row() retournera les lignes qui se conforment au flag de la requête. Par ailleurs, cela mettra à jour les lignes à chaque appel de la fonction.

DBX_COLNAMES_UNCHANGED (disponible depuis PHP PHP 4.3.0)
La casse du nom des colonnes retournées ne sera pas modifiée.
DBX_COLNAMES_UPPERCASE (disponible depuis PHP PHP 4.3.0)
Les noms de colonnes seront mis en majuscules.
DBX_COLNAMES_LOWERCASE (disponible depuis PHP PHP 4.3.0)
Les noms de colonnes seront mis en minuscules.

Notez que DBX_RESULT_INDEX est toujours active, indépendamment 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.

Valeurs de retour

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).

L'objet retourné a 5 membres (éventuellement 4, suivant 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.

<?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.

<?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 636. Listes les types et noms de colonnes

<?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 637. Afficher le contenu d'une base

<?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 638. 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" ;

?>

Exemples

Exemple 639. Comment gérer la valeur retournée

<?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 ) ) {
    
// ... faîtes des actions ici, voir les exemples détaillés ci-dessus ...
    // tout d'abord, afficher les noms et types de champs
    // puis, afficher un tableau contenant les valeurs retournées
} else {
    exit(
"Échec de la requête" );
}

dbx_close ( $link );
?>

Notes

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 minuscules.

Voir aussi

dbx_escape_string()
dbx_fetch_row()
dbx_connect()