PHP 8.4.6 Released!

db2_fetch_row

(PECL ibm_db2 >= 1.0.0)

db2_fetch_row Define o ponteiro do conjunto de resultados para a próxima linha ou linha solicitada

Descrição

db2_fetch_row(resource $stmt, int $row_number = -1): bool

Use db2_fetch_row() para iterar por um conjunto de resultados ou para apontar para uma linha específica em um conjunto de resultados se você solicitou um cursor rolável.

Para recuperar campos individuais do conjunto de resultados, chame a função db2_result().

Em vez de chamar db2_fetch_row() e db2_result(), a maioria das aplicações chamará db2_fetch_assoc(), db2_fetch_both(), ou db2_fetch_array() para avançar o ponteiro do conjunto de resultados e retornar uma linha completa como um array.

Parâmetros

stmt

Um recurso stmt válido.

row_number

Com cursores roláveis, pode ser solicitado um número de linha específico no conjunto de resultados. A numeração de linhas é indexada em 1.

Valor Retornado

Retorna true se a linha solicitada existir no conjunto de resultados. Retorna false se a linha solicitada não existir no conjunto de resultados.

Exemplos

Exemplo #1 Iterando por um conjunto de resultados

O exemplo a seguir demonstra como iterar por um conjunto de resultados com db2_fetch_row() e recuperar colunas do conjunto de resultados com db2_result().

<?php
$sql
= 'SELECT name, breed FROM animals WHERE weight < ?';
$stmt = db2_prepare($conn, $sql);
db2_execute($stmt, array(10));
while (
db2_fetch_row($stmt)) {
$name = db2_result($stmt, 0);
$breed = db2_result($stmt, 1);
print
"$name $breed";
}
?>

O exemplo acima produzirá:

cat Pook
gold fish Bubbles
budgerigar Gizmo
goat Rickety Ride

Exemplo #2 Alternativas i5/OS recomendadas para db2_fetch_row/db2_result

No i5/OS, é recomendado que seja usada a função db2_fetch_both(), db2_fetch_array() ou db2_fetch_object() em vez de db2_fetch_row()/db2_result(). Em geral, db2_fetch_row()/db2_result() têm mais problemas com vários tipos de coluna na tradução de EBCIDIC para ASCII, incluindo possível truncamento em aplicações DBCS. Pode-se perceber também que o desempenho de db2_fetch_both(), db2_fetch_array() e db2_fetch_object() é superior a db2_fetch_row()/db2_result().

<?php
$conn
= db2_connect("","","");
$sql = 'SELECT SPECIFIC_SCHEMA, SPECIFIC_NAME, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, ROUTINE_CREATED, ROUTINE_BODY, IN_PARMS, OUT_PARMS, INOUT_PARMS, PARAMETER_STYLE, EXTERNAL_NAME, EXTERNAL_LANGUAGE FROM QSYS2.SYSROUTINES FETCH FIRST 2 ROWS ONLY';
$stmt = db2_exec($conn, $sql, array('cursor' => DB2_SCROLLABLE));
while (
$row = db2_fetch_both($stmt)){
echo
"<br>db2_fetch_both {$row['SPECIFIC_NAME']} {$row['ROUTINE_CREATED']} {$row[5]}";
}
$stmt = db2_exec($conn, $sql, array('cursor' => DB2_SCROLLABLE));
while (
$row = db2_fetch_array($stmt)){
echo
"<br>db2_fetch_array {$row[1]} {$row[5]}";
}
$stmt = db2_exec($conn, $sql, array('cursor' => DB2_SCROLLABLE));
while (
$row = db2_fetch_object($stmt)){
echo
"<br>db2_fetch_object {$row->SPECIFIC_NAME} {$row->ROUTINE_CREATED}";
}
db2_close($conn);
?>

O exemplo acima produzirá:

db2_fetch_both MATCH_ANIMAL 2006-08-25-17.10.23.775000 2006-08-25-17.10.23.775000
db2_fetch_both MULTIRESULTS 2006-10-17-10.11.05.308000 2006-10-17-10.11.05.308000
db2_fetch_array MATCH_ANIMAL 2006-08-25-17.10.23.775000
db2_fetch_array MULTIRESULTS 2006-10-17-10.11.05.308000
db2_fetch_object MATCH_ANIMAL 2006-08-25-17.10.23.775000
db2_fetch_object MULTIRESULTS 2006-10-17-10.11.05.308000

Veja Também

  • db2_fetch_array() - Retorna um array, indexado pela posição da coluna, representando uma linha em um conjunto de resultados
  • db2_fetch_assoc() - Retorna um array, indexado pelo nome da coluna, representando uma linha em um conjunto de resultados
  • db2_fetch_both() - Retorna um array, indexado pelo nome da coluna e pela posição, representando uma linha em um conjunto de resultados
  • db2_fetch_object() - Retorna um objeto com propriedades que representam colunas na linha buscada
  • db2_result() - Retorna uma única coluna de uma linha no conjunto de resultados

adicione uma nota

Notas Enviadas por Usuários (em inglês) 2 notes

up
1
krisdover at hotmail dot com
18 years ago
if the second parameter (the row number) is specified, your connection needs to have the CURSOR option set to DB2_SCROLLABLE. Otherwise all calls to this function will fail. Internal to the ibm_db2 extension module the db2cli api function SQLFetchScroll() generates the error "CLI0145E Fetch type out of range" since it requires a scrollable resultset to work, instead of the default forward only resultset.

hope this saves someone the time it took me to track this down in the db2cli traces.

Regards,
Kris Dover
up
1
andrey at php dot net
19 years ago
If the second parameter is 0 or NULL (which eventually evaluates to 0) then the internal pointer is moved forward. < 0 value will return an warning.
To Top