(PECL ibm_db2 >= 1.0.0)
db2_fetch_row — Define o ponteiro do conjunto de resultados para a próxima linha ou linha solicitada
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.
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.
Retorna true
se a linha solicitada existir no conjunto de resultados. Retorna
false
se a linha solicitada não existir no conjunto de resultados.
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