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 — Enviar una consulta y traer todos los resultado (si hubo alguno)
Envía una consulta u trae todos los resultados.
link_identifier
El objeto de enlace de DBX devuelto por dbx_connect()
sql_statement
Declaración SQL.
La información dentro de la consulta deberíla ser adecuadamente escapada.
flags
El parámetro flags
se usa para controlar la cantidad de
niformación que es devuelta. Puede ser cualquier combinación de las siguientes
constantes con el operador a nivel de bit OR (|). Las banderas (flags) DBX_COLNAMES_*
sobrescriben la configuración dbx.colnames_case del php.ini.
DBX_RESULT_INDEX
DBX_RESULT_ASSOC
, el
objeto devuelto contiene también la información relacionada con
DBX_RESULT_INFO
, incluso si no se especificó.
DBX_RESULT_INFO
DBX_RESULT_ASSOC
DBX_RESULT_UNBUFFERED
DBX_COLNAMES_UNCHANGED
DBX_COLNAMES_UPPERCASE
DBX_COLNAMES_LOWERCASE
DBX_RESULT_INDEX
se usa siempre, a pesar del
valor actual del parámetro flags
. Esto significa
que sólo son efectivas las siguientes combinaciones:
DBX_RESULT_INDEX
DBX_RESULT_INDEX
|
DBX_RESULT_INFO
DBX_RESULT_INDEX
|
DBX_RESULT_INFO
|
DBX_RESULT_ASSOC
- esto es lo predeterminado si
no se especificó flags
.
dbx_query() devuelve un objeto o 1
si se tuvo éxtio, y 0 si falló. El objeto resultado es
devuelto sólo si la consulta dada en sql_statement
produce un conjunto de resultados (es decir, una consulta SELECT, incluso si el conjunto de resultados
está vacío).
El objeto resultado tiene cuatro o cinco
propiedades dependiendo de flags
:
Es un gestor válido para la base de datos conectada, y como tal se puede usar en las funciones específicas del módulo (si se requiere).
<?php
$resultado = dbx_query($enlace, "SELECT id FROM table");
mysql_field_len($resultado->handle, 0);
?>
Estas contienen el número de columnas (o campos) y de filas (o registros) respectivamente.
<?php
$resultado = dbx_query($enlace, 'SELECT id FROM table');
echo $resultado->rows; // número de registros
echo $resultado->cols; // número de campos
?>
DBX_RESULT_INFO
o
DBX_RESULT_ASSOC
en el parámetro
flags
. Es una matriz de 2 dimensiones
que tiene dos filas nominadas (name y
type) para recuperar la información de la columna.
Ejemplo #1 listar cada nombre de campo y tipo
<?php
$resultado = dbx_query($enlace, 'SELECT id FROM table',
DBX_RESULT_INDEX | DBX_RESULT_INFO);
for ($i = 0; $i < $resultado->cols; $i++ ) {
echo $resultado->info['name'][$i] . "\n";
echo $resultado->info['type'][$i] . "\n";
}
?>
flags
.
Si está establecido DBX_RESULT_ASSOC
, es posible usar
$resultado->data[2]["nombre_campo"].
Ejemplo #2 imprimir el contenido de la propiedad data en una tabla HTML
<?php
$resultado = dbx_query($link, 'SELECT id, parentid, description FROM table');
echo "<table>\n";
foreach ($resultado->data as $fila) {
echo "<tr>\n";
foreach ($fila as $campo) {
echo "<td>$campo</td>";
}
echo "</tr>\n";
}
echo "</table>\n";
?>
Ejemplo #3 Cómo tratar las consultas UNBUFFERED
<?php
$resultado = dbx_query ($enlace, 'SELECT id, parentid, description FROM table', DBX_RESULT_UNBUFFERED);
echo "<table>\n";
while ($fila = dbx_fetch_row($resultado)) {
echo "<tr>\n";
foreach ($fila as $campo) {
echo "<td>$campo</td>";
}
echo "</tr>\n";
}
echo "</table>\n";
?>
Ejemplo #4 Cómo tratar el valor devuelto
<?php
$enlace = dbx_connect(DBX_ODBC, "", "db", "username", "password")
or die("No se pudo conectar");
$resultado = dbx_query($enlace, 'SELECT id, parentid, description FROM table');
if (is_object($resultado) ) {
// ... hacer algo aquí, ver ejemplos detallados más adelante ...
// primero, imprimir los nombres de campos y tipos
// después, dibujar una tabla rellenada con los valores de los campos devueltos
} else {
exit("La consulta falló");
}
dbx_close($enlace);
?>
Nota:
Consulte siempre la documentación específica del módulo también.
Los nombres de columnas en una base de datos Oracle son devueltos en minúsculas.