(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
Envoie une requête et lit tous les résultats.
link_identifierL'objet DBX retournée par la fonction dbx_connect()
sql_statementLa 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
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
DBX_RESULT_ASSOC
DBX_RESULT_UNBUFFERED
DBX_COLNAMES_UNCHANGED
DBX_COLNAMES_UPPERCASE
DBX_COLNAMES_LOWERCASE
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.
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) :
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);
?>
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
?>
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";
}
?>
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";
?>
| 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.
|
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);
?>
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.