dbx_query
(PHP 4 >= 4.0.6, PHP 5 < 5.1.0, PECL dbx >= 1.1.0)
dbx_query — Envoie une requête et lit tous les résultats DBX
Description
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.
DBX_RESULT_INDEX
est toujours active, indépendamment de la valeur deflags
. 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, siflags
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
ouDBX_RESULT_ASSOC
sont spécifiés dans le paramètreflags
. 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
. SiDBX_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";
?>
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
Version en cache
22/11/2024 22:24:34 Cette version de la page est en cache (à la date du 22/11/2024 22:24:34) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-dbx-query.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.