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.
(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_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
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
DBX_RESULT_ASSOC
data[0][0]
fait que
data[0]['nom_de_la_premiere_colonne']
sera aussi
modifié.
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";
?>
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.