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.
dbx_query
(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5, PECL dbx >= 1.1.0)
dbx_query — Enviar una consulta y traer todos los resultado (si hubo alguno)
Descripción
Envía una consulta u trae todos los resultados.
Parámetros
- 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
- Es siempre establecida, es decir, el objeto devuelto tiene la propiedad data que es una matriz de 2 dimensiones indexada numéricamente. Por ejemplo, en la expresión data[2][3] 2 significa el número de fila (o registro) y 3 significa el número de columna (o campo). La primera fila y columna están indexadas como 0. Si también se especifica 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
- Proporciona información acerca de las columnas, como los nombres y tipos de campos.
- DBX_RESULT_ASSOC
- Consigue que los valores de campos se puedan acceder con los respectivos nombres de columnas usados como claves a la propiedad data del objeto devuelto. Los resultados relacionados son en realidad referencias a la información indexada numéricamente, por lo que modificar data[0][0] causa que data[0]['nombre_del_campo_de_la_primera_columna'] se mofique también.
- DBX_RESULT_UNBUFFERED
- Esta bandera no creará la propiedad data, y la propiedad rows será inicialmente 0. Use esta bandera para conjuntos de datos grandes, y use dbx_fetch_row() para recuperar los resultados fila por fila. La función dbx_fetch_row() devolverá las filas que están en conformidad con las banderas establecidas con esta consulta. A propósito, también actualizará rows cada vez que sea llamada.
- DBX_COLNAMES_UNCHANGED
- El caso de los nombres de columnas devueltos no serán cambiados.
- DBX_COLNAMES_UPPERCASE
- El caso de los nombres de columnas devueltos serán cambiados a mayúsculas.
- DBX_COLNAMES_LOWERCASE
- El caso de los nombres de columnas devueltos serán cambiados a minúsculas.
- 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.
Valores devueltos
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:
- handle
-
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);
?> - cols y rows
-
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
?> - info (opcional)
-
Es devuelto sólo si se espscifica 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.
Example #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";
}
?> - data
-
Esta propiedad contiene la información resultante actual, posiblemente asociada
tambien con los nombres de columna, dependiendo de flags.
Si está establecido DBX_RESULT_ASSOC, es posible usar
$resultado->data[2]["nombre_campo"].
Example #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";
?>Example #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";
?>
Historial de cambios
| Versión | Descripción |
|---|---|
| 5.0.0 | Se introdujo DBX_RESULT_UNBUFFERED. |
| 4.3.0 | Se introdujo DBX_COLNAMES_UNCHANGED, DBX_COLNAMES_UPPERCASE, y DBX_COLNAMES_LOWERCASE. |
Ejemplos
Example #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);
?>
Notas
Note:
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.
Ver también
- dbx_escape_string() - Escapar una cadena para que pueda ser usada de forma segura en una declaración sql
- dbx_fetch_row() - Traer filas de un resultado de una consulta que tuvo la bandera DBX_RESULT_UNBUFFERED establecida
- dbx_connect() - Abrir una conexión/base de datos
