db2_fetch_row

(PECL ibm_db2 >= 1.0.0)

db2_fetch_row Establecer el apuntador de los resultados hacia la siguiente fila o a la fila solicitada

Descripción

db2_fetch_row ( resource $stmt [, int $row_number ] ) : bool

db2_fetch_row() se utiliza para iterar a través de un bloque de resultados o para apuntar a una fila específica del resultado si se utiliza un cursor de recorrido.

Para extraer campos individuales del resultado hay que llamar a la función db2_result().

En lugar de llamar a db2_fetch_row() y db2_result(), la mayoría de las aplicaciones utilizan las funciones db2_fetch_assoc(), db2_fetch_both() o db2_fetch_array() para avanzar el apuntador del bloque de resultados y devolver una fila completa como arreglo.

Parámetros

stmt

Un recurso stmt válido.

row_number

Con cursores de recorrido, se puede solicitar un número de fila específica del bloque de resultados. Las filas se indexan a partir de uno.

Valores devueltos

Devuelve TRUE si la fila solicitada existe dentro de los resultados. Devuelve FALSE si la fila solicitada no existe entre los resultados.

Ejemplos

Ejemplo #1 Iterando a través de un bloque de resultados

El siguiente ejemplo demuestra como iterar a través de los resultados con db2_fetch_row() y extraer las columnas del resultado con 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($stmt0);
    
$breed db2_result($stmt1);
    print 
"$name $breed";
}
?>

El resultado del ejemplo sería:

cat Pook
gold fish Bubbles
budgerigar Gizmo
goat Rickety Ride

Ejemplo #2 Alternativas recomendadas para db2_fetch_row/db2_result en i5/OS

En i5/OS se recomienda el uso de db2_fetch_both(), db2_fetch_array() o db2_fetch_object() en lugar de db2_fetch_row()/db2_result(). En general db2_fetch_row()/db2_result() tienen más problemas con la traducción de EBCIDIC a ASCII en algunos tipos de columnas, incluyendo posibles truncamientos en aplicaciones DBCS. Es posible que el rendimiento de db2_fetch_both(), db2_fetch_array() y db2_fetch_object() sea superior comparado con 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);
?>

El resultado del ejemplo sería:

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

Ver también

  • db2_fetch_array() - Devolver un arreglo, indexado por la posición de las columnas, que represanta una fila de un bloque de resultados
  • db2_fetch_assoc() - Devolver un arreglo, indexado por el nombre de las columnas, representando una fila del bloque de resultados
  • db2_fetch_both() - Devolver un arreglo, indexado por el nombre y por la posición de la columna, representando una fila de un bloque de resultados
  • db2_fetch_object() - Devolver un objeto con atributos que representan a las columnas de una fila extraida
  • db2_result() - Devolver una columna específica del resultado