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.(PECL ibm_db2 >= 1.0.0)
db2_fetch_row — Modifie le pointeur du jeu de résultats à la prochaine ligne ou à la ligne demandée
La fonction db2_fetch_row() peut être utilisée pour itérer à travers un jeu de résultats ou pour pointer à une ligne spécifique d'un jeu de résultats si l'on a demandé un curseur défilant.
Pour obtenir des champs individuels du jeu de résultats, il faut appeler la fonction db2_result().
Au lieu d'appeler les fonctions db2_fetch_row() et db2_result(), la plupart des applications vont appeler la fonction db2_fetch_assoc(), db2_fetch_both() ou db2_fetch_array() pour avancer le pointeur dans le jeu de résultats et retourner une ligne complète en tant que tableau.
stmt
Une ressource stmt valide.
row_numberAvec des curseurs défilants, il est possible de demander un numéro de ligne spécifique du jeu de résultats. Les numéros des lignes commencent à l'indice 1.
Retourne true si la ligne demandée existe dans le jeu de résultats.
Retourne false si la ligne demandée n'existe pas dans le jeu de
résultats.
Exemple #1 Itération à travers un jeu de résultats
L'exemple suivant démontre comment itérer à travers un jeu de résultats avec la fonction db2_fetch_row() et récupérer les colonnes du jeu de résultats avec db2_result().
<?php
$sql = 'SELECT nom, race FROM animaux WHERE poids < ?';
$stmt = db2_prepare($conn, $sql);
db2_execute($stmt, array(10));
while (db2_fetch_row($stmt)) {
$nom = db2_result($stmt, 0);
$race = db2_result($stmt, 1);
print "$nom $race";
}
?>L'exemple ci-dessus va afficher :
chat Pook cyprin doré Bubbles perruche Gizmo chèvre Rickety Ride
Exemple #2 Alternatives recommandées sur i5/OS à db2_fetch_row/db2_result
Sur i5/OS, il est recommandé d'utiliser
db2_fetch_both(), db2_fetch_array()
ou db2_fetch_object() au lieu de
db2_fetch_row()/db2_result().
En général,
db2_fetch_row()/db2_result() ont plus
de problèmes avec divers types de colonnes lors de la traduction
EBCDIC vers ASCII, y compris une
possible troncature dans les applications DBCS.
Il est également possible de trouver les performances de
db2_fetch_both(), db2_fetch_array()
et db2_fetch_object() supérieures à celles de
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);
?>L'exemple ci-dessus va afficher :
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
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.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