(PECL ibm_db2 >= 1.0.0)
db2_fetch_row — Устанавливает указатель набора результатов на следующую строку или запрошенную строку
$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