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 Doverdb2_fetch_row
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
db2_fetch_row
Референца за `function.db2-fetch-row.php` со подобрена типографија и навигација.
db2_fetch_row
(PECL ibm_db2 >= 1.0.0)
db2_fetch_row — Sets the result set pointer to the next row or requested row
= NULL
од PHP 8.0.0. Силно се обесхрабрува потпирањето на оваа функција. db2_fetch_row() to iterate through a result set, or to point to a specific row in a result set if you requested a scrollable cursor.
To retrieve individual fields from the result set, call the db2_result() function.
Rather than calling db2_fetch_row() and db2_result(), most applications will call one of db2_fetch_assoc(), db2_fetch_both(), или db2_fetch_array() to advance the result set pointer and return a complete row as an array.
Параметри
stmt-
Валиден
stmtresource. row_number- With scrollable cursors, you can request a specific row number in the result set. Row numbering is 1-indexed.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true if the requested row exists in the result set. Returns
false if the requested row does not exist in the result set.
Примери
Example #1 Iterating through a result set
ако полето не постои и издава предупредување. db2_fetch_row() Следниот пример покажува како да се помине низ множество резултати со 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";
}
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
cat Pook gold fish Bubbles budgerigar Gizmo goat Rickety Ride
Example #2 i5/OS recommended alternatives to db2_fetch_row/db2_result
On i5/OS it is recommended that you use db2_fetch_both(),
db2_fetch_array(), или db2_fetch_object()
over db2_fetch_row()/db2_result(). In general
db2_fetch_row()/db2_result() have more issues with various column types in EBCIDIC to ASCII
translation, including possible truncation in DBCS applications. You may also find the performance of db2_fetch_both(),
db2_fetch_array()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во db2_fetch_object() to be superior to 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);
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
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
Види Исто така
- db2_fetch_array() - Враќа низа, индексирана по позиција на колона, што претставува ред во сет на резултати
- db2_fetch_assoc() - Враќа низа, индексирана по име на колона, што претставува ред во сет на резултати
- db2_fetch_both() - Враќа низа, индексирана по име и позиција на колона, што претставува ред во сет на резултати
- db2_fetch_object() - Враќа објект со својства што претставуваат колони во добиениот ред
- db2_result() - Враќа една колона од ред во сет на резултати
Белешки од корисници 2 забелешки
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.