SunshinePHP Developer Conference 2015

dbx_query

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

dbx_queryEnvia uma requisição e armazena todos os resultados (se houver)

Descrição

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

Envia uma query e obtém todos resultados.

Parâmetros

link_identifier

O link do objeto DBX retornado pela dbx_connect()

sql_statement

O comando SQL.

flags

O parâmetro flags é usado para controlar a quantiodade de informação que é retornada. Estas informações podem ser qualquer combinação de uma das constantes abaixo usando o operador bitwise OR (|). As flags DBX_COLNAMES_* quando usadas, substituem as dbx.colnames_case configuradas no php.ini.

DBX_RESULT_INDEX
Está sempre ligada, isto é, o objeto retornado contém uma propriedade data, que é um array numérico indexado com 2 dimensões. Por exemplo, na expressão data[2][3] 2 é o número da coluna (ou registro) e 3 é o número da coluna (ou campo). A primeira linha e coluna estão no índice 0. Se a constante DBX_RESULT_ASSOC estiver sendo especificada, o objeto retornado irá conter informações relacionadas à DBX_RESULT_INFO também, mesmo que isto não tenha sido especificado.
DBX_RESULT_INFO
Contém informações sobre colunas, assim como o nome e tipos dos campos.
DBX_RESULT_ASSOC
Esta constante torna possível o acesso aos valores dos campos e nomes das colunas respectivamente, ela é usada como chave para os objetos retornados na propriedade data. Os resultados associados são atualmente referências aos dados numericamente posicionados, sendo assim, ao modificar data[0][0] causa a modificação de data[0]['nome_para_a_primeira_coluna'] também.
DBX_RESULT_UNBUFFERED (PHP 5)
Esta flag não irá criar a propriedade data, e a propriedade rows irá iniciar à partir do 0. Use esta flag para grandes datasets, e use a função dbx_fetch_row() para obter os resultados linha à linha. A função dbx_fetch_row() irá retornar as linhas que fazem parte das flags desta requisição. Incidentalmente, ela irá também atualizar a propriedade rows toda vez que for chamada.
DBX_COLNAMES_UNCHANGED (disponível à partir do PHP 4.3.0)
Os nomes das colunas retornadas não serão alterados.
DBX_COLNAMES_UPPERCASE (disponível à partir do PHP 4.3.0)
Os nomes das colunas retornadas serão todas alteradas para CAIXA ALTA.
DBX_COLNAMES_LOWERCASE (disponível à partir do PHP 4.3.0)
Os nomes das colunas retornadas serão todas alteradas para caixa baixa.
Note que a constante DBX_RESULT_INDEX é sempre usada, contendo o valor atual do parâmetro flags. Isto significa que somennte as seguintes combinaçõs surtem efeito:
  • DBX_RESULT_INDEX
  • DBX_RESULT_INDEX | DBX_RESULT_INFO
  • DBX_RESULT_INDEX | DBX_RESULT_INFO | DBX_RESULT_ASSOC - este é o padrão, se o parâmetro flags não for especificado.

Valor Retornado

dbx_query() retorna um objeto ou 1 em sucesso, e 0 em falha. O objeto é retornado somente se a query dada em sql_statement produz um conjunto de resultados (i.e. uma query SELECT, até mesmo se o conjunto de resultado é vazio).

O objeto retornado contém quatro ou cinco propriedades dependendo do parâmetro flags:

handle

É um evento válido para a conexão com o banco de dados, e como tal pode ser usado nas funções do módulo específico (se necessário).

<?php
$result 
dbx_query ($link"SELECT id FROM tabela");
mysql_field_len ($result->handle0);
?>

cols e rows

Estas propriedades conte´m o número das colunas (ou campos) e das linhas (ou registros) respectivamente.

<?php
$result 
dbx_query ($link'SELECT id FROM tabela');
echo 
$result->rows// número de registros
echo $result->cols// número de campos
?>

info (opcional)
É retornado somente se as constantes DBX_RESULT_INFO ou DBX_RESULT_ASSOC são especificados no parâmetro flags. Esta propriedade é um array de 2 dimensões, que contém duas linhas nomeadas (name e type) para obter informação da coluna.

Exemplo #1 lista cada nome e tipo de campo

<?php
$result 
dbx_query ($link'SELECT id FROM tabela',
                     
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";  
}
?>
data
Esta propriedade contém os dados do resultado atual, possivelmente associado com os nomes das colunas depdnendo do parâmetro flags. Se a constante DBX_RESULT_ASSOC está ligada, é possível usar $result->data[2]["nome_do_campo"].

Exemplo #2 colocando o conteúdo da propriedade data em uma tabela HTML

<?php
$resultado 
dbx_query ($link'SELECT id, parentid, descricao FROM tabela');

echo 
"<table>\n";
foreach ( 
$resultado->data as $linha ) {
    echo 
"<tr>\n";
    foreach ( 
$linha as $campo ) {
        echo 
"<td>$campo</td>";
    }
    echo 
"</tr>\n";
}
echo 
"</table>\n";
?>

Exemplo #3 Como tratar requisições "UNBUFFERED"

<?php

$resultado 
dbx_query ($link'SELECT id, parentid, descricao FROM tabela'DBX_RESULT_UNBUFFERED);

echo 
"<table>\n";
while ( 
$linha dbx_fetch_row($resultado) ) {
    echo 
"<tr>\n";
    foreach ( 
$linha as $campo ) {
        echo 
"<td>$campo</td>";
    }
    echo 
"</tr>\n";
}
echo 
"</table>\n";

?>

Exemplos

Exemplo #4 Como manipular o valor retornado

<?php
$link   
dbx_connect(DBX_ODBC"""db""username""password")
    or die(
"Could not connect");

$result dbx_query($link'SELECT id, parentid, description FROM table');

if (
is_object($result) ) {
    
// ... do some stuff here, see detailed examples below ...
    // first, print out field names and types 
    // then, draw a table filled with the returned field values
} else {
    exit(
"Query failed");
}

dbx_close($link);
?>

Notas

Nota:

Sempre refira-se à documentação do módulo-específico quando necessário.

Os nomes das colunas em uma requisição de um banco de dados Oracle são retornados em maiúsculo.

Veja Também

  • dbx_escape_string() - Transforma uma string para que ela possa ser seguramente usada em comandos-sql.
  • dbx_fetch_row() - Lê as linhas do resultado de uma requisição que tem a flag DBX_RESULT_UNBUFFERED ligada
  • dbx_connect() - Inicia uma conexão/banco de dados

add a note add a note

User Contributed Notes 1 note

up
0
BeyondMat
9 years ago
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.
To Top