odbc_fetch_into

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_fetch_into将一个结果行取到数组中

说明

odbc_fetch_into(资源 $statement, 数组 &$array, 整数 $row = 0): 整数|false

将一个结果行取到 数组 中。

参数

statement

结果 资源

array

结果 数组,可以是任何类型,因为它将被转换为数组类型。数组将包含从数组索引 0 开始的列值。

row

行号。

返回值

返回结果中的列数;如果发生错误,则返回 false

范例

范例 #1 odbc_fetch_into() 范例

<?php
$rc
= odbc_fetch_into($res_id, $my_array);
?>

<?php
$rc
= odbc_fetch_into($res_id, $my_array, 2);
?>

添加注释

用户贡献的注释 10 条注释

1
php at nospamplease dot markjrubin dot com
20 年前
关于 free at muktimedia dot com 的问题。

我们找到了一个简单的解决方案,只需在您的 SQL 语句中将文本强制转换为 ntext。

SELECT cast ( field_name AS NTEXT ) AS field_name

Mark J Rubin
0
free at muktimedia dot com
21 年前
MSSQL 2000(或可能是 7)的问题::::
警告:SQL 错误:[Microsoft][ODBC SQL Server 驱动程序]无效
描述符索引,SQL 状态 S1002 在 SQLGetData 中 ...

http://bugs.php.net/bug.php?id=18514

当对包含类型为“text”的字段(MSSQL 2K)的结果集调用 @ODBC_RESULT_ALL() 时,将看到上述错误。如果您在 @ODBC_RESULT_ALL 中看到此错误,那么当结果集包含类型为“text”的字段(MSSQL 2K)时,@ODBC_FETCH_INTO() 肯定会返回 false,从而导致头痛。

解决方法:将字段类型更改为 NTEXT(SQL 2K/7) - 在许多情况下(除了数据库存储空间)这是更好的选择,因为 NTEXT 只是 Unicode 文本。

我在 http://www.phpbuilder.com/mail/php-db/2001071/0240.php 尝试了一种解决方法,但这没有奏效。

看来 PHP 的 ODBC 库需要更新,因为“text”和“memo”字段经常在 Win32 环境中使用...
0
scott at abcoa dot com
22 年前
当在 php 版本 4.0.5、4.0.6 和 4.2.x 中不得不更改 odbc_fetch_into() 时,使用它变得很乏味。此外,define() 函数不再与 4.2.x 很好地配合使用,因此 define() 对于 odbc_fetch_into() 来说不可靠。花时间跟上这些变化是不可取的。事实证明,更好的解决方案是使用 odbc_fetch_array,这样就不必处理更新数据库、网页等的麻烦。从长远来看,这是值得的。

--剪辑--(旧脚本)
define(CUSTOMER_ID,0);
define(CUSTOMER_NAME,1);

//$rows = 1;

if (odbc_fetch_row($result))
{
//odbc_fetch_into($result,1,&$user_detail); //php 4.0.5
//odbc_fetch_into($result,$row,$user_detail); //php 4.0.6
odbc_fetch_into($result,$user_detail,1); //php 4.2.x
echo $user_detail[CUSTOMER_ID];
} else {
echo "失败!";
}
--剪辑--
//#########################################
--剪辑--(新脚本)
if (odbc_fetch_row($result))
{
while($user_detail = odbc_fetch_array($result) ) {
echo $user_detail[CUSTOMER_ID];
}
} else {
echo "失败!";
}
--剪辑--

当我们不断向数据库表添加列时,这非常有用。如果您合并两个表并且有两个具有相同列名的列,那么您需要有两个单独的数组,例如 $user_detail1 和 $user_detail2 等。无论您能想到什么。
0
matt(at)lazycat(dot)org
22 年前
最令人讨厌的是,使用 PHP 4.0.6,关于要求行号为非常量的“新特性”意味着这段代码不再起作用

$row_num = 1; $row = array();
while (odbc_fetch_into($result, $row_num++, $row) {
// 内容
}

所以,如果您想知道为什么,那就是原因。当我升级到 4.0.6 时,这让我比其他任何 PHP 问题都更加愤怒
幸运的是,解决方法非常简单。只需在 odbc_fetch_into() 中使用 $row_num,并在 while 循环中添加 $row_num++。但这仍然非常令人讨厌!我还没有找到其他函数存在这个问题..
-1
scott at gamesonline dot com
25 年前
(Win32) 当针对 Access 97 表调用此函数时,如果第二个参数作为要检索的行传递,那么您似乎会不断获得相同的结果,无论传递的值如何。解决方案:不要传递第二个参数,所有内容都会自动递增,一切正常。
-1
vbhunt at silverfox dot com
25 年前
此函数与 odbc_result 的交互方式是,它似乎为当前查询结果递增了内部记录指针。因此,如果您使用此函数并希望将刚刚获取的记录用于 odbc_result;您必须再次使用当前行号调用 odbc_fetch_result。当您的查询结果包含单个记录时,这种行为特别令人困惑。在这种情况下,使用 odbc_fetch_into 似乎会破坏 odbc_result。
-2
alvaro at demogracia dot com
13 年前
如果读取行时出错,它会返回 FALSE,但当没有更多行可用时也会返回 FALSE。
-2
PHP at TeamBurke dot com dot NoSpam
21 年前
不要从第 0 行开始

当使用 odbc_fetch_into($id,$row_num,$array) 时,不要将 $row_num 初始化为 0。

原因... 好吧,如果您这样做,并且表中只有一条记录,您将收到错误... 没什么问题。但是,如果表中有多行记录,则不会出现错误,并且表中的第一条记录会丢失。

这可能看起来很明显,但请记住,我们从 0 开始计数许多事物,因此在这里这样做在我看来很有道理。花了相当长的时间才解决这个问题,因为我在另一个页面上使用了相同的方法,在那里有多行记录,并且那个页面运行良好。我只是没有注意到它未能打印第一条记录的信息。所以您可以想象,当我发现代码在一个页面上运行,而在另一个页面上却没有运行时,我的困惑程度。
-2
doc at vulcanmicro dot com
23 年前
从 php 4.0.5 到 php 4.0.6,以下语法不再起作用
odbc_fetch_into($result,$start-1,&$fields);
在 4.0.5 中它可以工作,在 4.0.6 中它会产生此错误
只能通过引用传递变量
但是,以下行可以工作
$tmp=$start-1;
odbc_fetch_into($result,$tmp,&$fields);
-1
brian m
19 年前
这是一个非常简单的方法,可以将 SQL 结果转储到可以编辑和操作的数组中。
==============================================

// 创建数组
$row = array();
while (odbc_fetch_into($res, $row, ODBC_NUM)) {
array_push($stuff,$row);
}

// 结果现在在一个数组中。要将数组显示为 HTML 表格,我们可以使用以下内容

foreach($stuff as $line){
echo "<tr>\n";
foreach($line as $field){
echo "<td>".$field."</td>\n";
}
}

==============================================
使用此方法可以让一个人控制每一行和字段中的各个数据元素。我对 ASP 和 getrows 函数比较熟悉,但这是我能找到的最接近的等效项。

我的一位好朋友兼同事能够确定如何使其正常工作。感谢 Robby。
To Top