db2_fetch_row

(PECL ibm_db2 >= 1.0.0)

db2_fetch_rowУстанавливает указатель набора результатов на следующую строку или запрошенную строку

Описание

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

Используйте db2_fetch_row() для итерации по набору результатов или для указания на определённую строку в наборе результатов, если вы запросили прокручиваемый курсор.

Чтобы получить отдельные поля из набора результатов, вызовите функцию db2_result().

Вместо того, чтобы вызывать db2_fetch_row() и db2_result(), большинство приложений будет вызывать одну из функций db2_fetch_assoc(), db2_fetch_both() или db2_fetch_array(), чтобы продвинуть указатель набора результатов и вернуть полную строку в виде массива.

Список параметров

stmt

Допустимый ресурс stmt.

row_number

С помощью прокручиваемых курсоров вы можете запросить конкретный номер строки в наборе результатов. Нумерация строк начинается с 1.

Возвращаемые значения

Возвращает true, если запрошенная строка существует в наборе результатов. Возвращает false, если запрошенная строка не существует в наборе результатов.

Примеры

Пример #1 Итерации по набору результатов

В следующем примере показано, как выполнить итерацию по набору результатов с помощью 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";
}
?>

Результат выполнения приведённого примера:

cat Pook
gold fish Bubbles
budgerigar Gizmo
goat Rickety Ride

Пример #2 Рекомендуемые альтернативы db2_fetch_row/db2_result для i5/OS

В i5/OS рекомендуется использовать db2_fetch_both(), db2_fetch_array() или db2_fetch_object() вместо db2_fetch_row()/db2_result(). Обычно у db2_fetch_row()/db2_result() больше проблем с различными типами столбцов при преобразовании EBCIDIC в ASCII, включая возможное усечение в DBCS приложениях. Вы также можете обнаружить, что производительность db2_fetch_both(), db2_fetch_array() и db2_fetch_object() превосходит 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);
?>

Результат выполнения приведённого примера:

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() - Возвращает один столбец из строки в наборе результатов

add a note add a note

User Contributed Notes 2 notes

up
1
krisdover at hotmail dot com
17 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