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
flagsse 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 conDBX_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_INDEXse usa siempre, a pesar del valor actual del parámetroflags. 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.
-
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_INFOoDBX_RESULT_ASSOCen el parámetroflags. 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";
}
?> - data
-
Esta propiedad contiene la información resultante actual, posiblemente asociada
tambien con los nombres de columna, dependiendo de
flags. Si está establecidoDBX_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";
?>
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
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);
?>
Notas
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.
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