dbx_query

(PHP 4 >= 4.0.6, PHP 5 < 5.1.0, PECL dbx >= 1.1.0)

dbx_queryEnviar una consulta y traer todos los resultado (si hubo alguno)

Descripción

dbx_query ( object $link_identifier , string $sql_statement [, int $flags ] ) : mixed

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.
Observer que 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.

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->handle0);
?>

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.

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á 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";

?>

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