dbx_query
(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5, PECL dbx >= 1.1.0)
dbx_query — Envia uma requisição e armazena todos os resultados (se houver)
Descrição
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_ASSOCestiver sendo especificada, o objeto retornado irá conter informações relacionadas àDBX_RESULT_INFOtambé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.
DBX_RESULT_INDEXé sempre usada, contendo o valor atual do parâmetroflags. 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âmetroflagsnã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->handle, 0);
?> - 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_INFOouDBX_RESULT_ASSOCsão especificados no parâmetroflags. Esta propriedade é um array de 2 dimensões, que contém duas linhas nomeadas (name e type) para obter informação da coluna.Example #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 constanteDBX_RESULT_ASSOCestá ligada, é possível usar $result->data[2]["nome_do_campo"].Example #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";
?>Example #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
Example #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
Note:
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