PHP Unconference Europe 2015

dbx_query

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

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

Les données à l'intérieur de la requête doivent être proprement échappées.

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
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
La casse du nom des colonnes retournées ne sera pas modifiée.
DBX_COLNAMES_UPPERCASE
Les noms de colonnes seront mis en majuscules.
DBX_COLNAMES_LOWERCASE
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->handle0);
?>

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 #1 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 #2 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 #3 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";

?>

Historique

Version Description
5.0.0 Ajout de la constante DBX_RESULT_UNBUFFERED.
4.3.0 Ajout des constantes DBX_COLNAMES_UNCHANGED, DBX_COLNAMES_UPPERCASE, et DBX_COLNAMES_LOWERCASE.

Exemples

Exemple #4 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() - Protège une chaîne de caractères pour l'utiliser dans une requête
  • dbx_fetch_row() - Lit une ligne dans un résultat DBX ayant l'option DBX_RESULT_UNBUFFERED activée
  • dbx_connect() - Ouvre une connexion à une base de données

add a note add a note

User Contributed Notes 1 note

up
0
BeyondMat
9 years ago
You can use stored procedures instead of having to specify a text string to execute, e.g.

$results = dbx_query($conn, 'sp_Test');

This executes the stored procedure sp_Test.
To Top