odbc_fetch_object

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

odbc_fetch_object将结果行获取为对象

描述

odbc_fetch_object(资源 $statement, 整数 $row = -1): stdClass|false

从 ODBC 查询中获取一个 对象

参数

statement

来自 odbc_exec() 的结果资源。

row

可选地选择要检索的哪一行号。

返回值

返回一个与获取的行相对应的对象,或者如果不再有行,则返回 false

注释

注意: 此函数存在于使用 DBMaker、IBM DB2 或 UnixODBC 支持编译时。

参见

添加注释

用户贡献的注释 10 个注释

1
thorsten at rinne dot info
20 年前
odbc_fetch_object() 在 W2K 下与 PHP 4.3.3 以及 IBM DB2 V.7.2 和 V.8.1 一起使用效果很好

<?php
$conn
= odbc_connect($db_name, $username, $password) or die(odbc_error_msg());
$sql = "SELECT * FROM TABLE";
$result = odbc_exec($conn, $sql);
while (
$rows = odbc_fetch_object($result)) {
print
$rows->COLUMNNAME;
}
odbc_close($conn);
?>
1
general at maccrafters dot com
21 年前
这是我写的一段代码,它的行为就像 mysql_fetch_object()

function odbc_fetch_object($result)
{
$rs=array();
if(odbc_fetch_into($result,&$rs))
{
foreach($rs as $key=>$value)
{
$fkey=strtoupper(odbc_field_name($result,$key+1));
$rs_obj->$fkey = trim($value);

}
}
return($rs_obj);
}

特别感谢之前的发布者为我提供了这段代码的起点。
0
匿名
3 年前
如果它包含有关返回的对象包含的信息,这将更有用。从 var_dump() 看,它似乎只是一个以对象形式存在的关联数组。但例如,是否有列类型信息?
0
charlesk at netgaintechnology dot com
21 年前
我要求一位开发人员在 CVS 中启用此功能。我试了一下,它可以工作。我没有做任何特别的事情。我使用的是随我的 Windows XP Pro 安装提供的 Microsoft Access ODBC 驱动程序。

我使用的是 Apache Web 服务器。

查尔斯
0
kynaston at yahoo dot com
21 年前
如果您在 PHP 4.2+ 中使用 Masoud 的代码,请将第五行更改为

odbc_fetch_into($result,&$rs);

(参数顺序已更改)
-1
j dot a dot z at bluewin dot ch
21 年前
嘿,“general at maccrafters dot com”

非常感谢您的代码。它为我节省了时间!
但是我稍微扩展了一下!
---------------------------------------------
function __odbc_fetch_object($res)
{
if( function_exists("odbc_fetch_object") )
return odbc_fetch_object($res);

$rs = array();
$rs_obj = false;
if( odbc_fetch_into($res, &$rs) )
{
foreach( $rs as $key=>$value )
{
$fkey = odbc_field_name($res, $key+1);
$rs_obj->$fkey = trim($value);
}
}
return $rs_obj;
}
---------------------------------------------
干杯,jaz
-1
Marcus dot Karlsson at usa dot net
22 年前
只需删除 php_odbc.h 文件中第 216 行 (219 行) 的 #ifdef HAVE_DBMAKER/#endif,以及 php_odbc.c 文件中第 87 行 (90 行) 和 1229 行 (1380 行) 的相同内容,就可以让 odbc_fetch_object() 和 odbc_fetch_array() 同时工作。

我已经在使用 ODBC 连接到 MySQL 数据库的 PHP 4.2.0 版本中成功地做到了这一点。

我真的不明白为什么一开始就存在 #ifdef,但他们确实有他们的理由。

这些是我“修补”的文件
/* $Id: php_odbc.c,v 1.120.2.1 2002/04/08 22:21:30 sniper Exp $ */
/* $Id: php_odbc.h,v 1.45.2.1 2002/03/12 02:27:47 sniper Exp $ */
-1
masuod_a at hotmail dot com
22 年前
此函数在 PHP 4.1.1 中不可用,您可以尝试以下方法

if (function_exists(odbc_fetch_object))
return;
function odbc_fetch_object($result, $rownumber=1) {
$rs=array();
odbc_fetch_into($result, $rownumber,$rs);
foreach ($rs as $key => $value) {
$fkey=strtolower(odbc_field_name($result, $key+1));
$rs_obj->$fkey = $value;
}
return $rs_obj;
}
如果您想在循环中使用此函数,则必须设置 rownumber 参数
您不能像这样使用此函数
while ($myobj=odbc_fetch_object($res)) {
....
}
-1
philip
19 年前
此函数需要存在以下一项:Windows、DB2 或 UNIXODBC。
-1
h4 at locked dot org
21 年前
我的两分钱

function data($res) {
$obj = new stdClass();
$data_array = array();

if (!odbc_fetch_into($res, $data_array)) {
return 0;
}

$num_fields = odbc_num_fields($res);

for ($i = 0;$i < $num_fields; $i++) {
$name = odbc_field_name($res, $i + 1);
if (!$name) {
return 0;
}

$obj->{$name} = $data_array[$i];
}

return $obj;
}

对我有用(PHP 4.3.1)
To Top