db2_fetch_both

(PECL ibm_db2 >= 1.0.0)

db2_fetch_both返回一个数组,其中既按列名又按位置对结果集中的某一行进行索引

描述

db2_fetch_both(资源 $stmt, 整数 $行号 = -1): 数组|fals

返回一个数组,行列索引表示结果集中的一行。请注意,db2_fetch_both() 返回的行需要比由 db2_fetch_assoc()db2_fetch_array() 返回的单索引数组更多的内存。

参数

stmt

包含结果集的有效 stmt 资源。

行号

从结果集中请求特定 1 索引行。如果结果集使用仅前向游标,传递该参数会导致 PHP 警告。

返回值

返回列关联数组,按照列名称和 0 索引列号编制索引。该数组表示结果集中下一行或请求行。如果没有结果集中的行,或由 行号 请求的行在结果集中不存在,则返回 false

示例

示例 1 遍历仅前向游标

如果在没有指定行号的情况下调用 db2_fetch_both(),它将自动检索结果集中下一行。以下示例通过列名称和数字索引访问返回的数组中的列。

<?php

$sql
= "SELECT id, name, breed, weight FROM animals ORDER BY breed";
$stmt = db2_prepare($conn, $sql);
$result = db2_execute($stmt);

while (
$row = db2_fetch_both($stmt)) {
printf ("%-5d %-16s %-32s %10s\n",
$row['ID'], $row[0], $row['BREED'], $row[3]);
}
?>

上述示例将输出

0     Pook             cat                                    3.20
5     Rickety Ride     goat                                   9.70
2     Smarty           horse                                350.00

示例#2使用db2_fetch_both()从可滚动游标中检索特定行

如果结果集使用可滚动的游标,则可以使用特定行号调用db2_fetch_both()。以下示例从结果集中检索每一行(从第二行开始)。

<?php

$sql
= "SELECT id, name, breed, weight FROM animals ORDER BY breed";
$result = db2_exec($stmt, $sql, array('cursor' => DB2_SCROLLABLE));

$i=2;
while (
$row = db2_fetch_both($result, $i)) {
printf ("%-5d %-16s %-32s %10s\n",
$row[0], $row['NAME'], $row[2], $row['WEIGHT']);
$i = $i + 2;
}
?>

上述示例将输出

0     Pook             cat                                    3.20
5     Rickety Ride     goat                                   9.70
2     Smarty           horse                                350.00

另请参阅

添加注释

用户贡献的注释 1 个注释

eacosta at openware dot biz
16 年前
你好,

几周前,我在处理一个结果集中大量的
记录时遇到了困难。

我在一个数据库适配器类的函数 db2_fetch_both 中
检索一次只有一条记录。记录总数
是:5647,当我处理到记录号 1600 时,函数崩溃
在“Actual result”字段中生成以下消息。

我接下来复制表的信息

TMP_TABLE
-----------------------------------------------------------------
| ID | TYPE | SIZE | NULL |
-----------------------------------------------------------------
| ID | INTEGER | 4 | NO |
| SERVICE | VARCHAR | 30 | NO |
| ID_v | VARCHAR | 30 | NO |
| INFORMATION | CLOB | 65536 | YES |
| EXP_LEVEL | INTEGER | 4 | NO |
| IP4B | BIGINT | 8 | NO |
| MODIFIED | INTEGER | 4 | YES |
| DETAIL | VARCHAR | 200 | YES |
| FALSPOS | INTEGER | 4 | YES |
-----------------------------------------------------------------

函数崩溃后,我收到了 db2_fetch_both 的以下消息

db2_fetch_array() [function.db2-fetch-array]:获取失败

向 IBM OpenDev 报告此消息后,一名 OpenDev IBMer 为我提供了帮助,他注意到
这不是 ibm_db2 模块问题,实际上是数据库配置
问题。OpenDev IBMer 查看了我的 DB2 Client CLI TRACE 文件并找出问题所在。
因此,我不得不修改 APP_CTL_HEAP_SZ,现在一切都似乎正常工作了。

--
Esteban Acosta Villafañe
Area I+D
http://www.openware.biz/opendev
Linkein 资料:http://www.linkedin.com/in/estebanav
To Top