Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : ODBC Functions (Unified) : odbc_fetch_object

odbc_fetch_object

Fetch a result row as an object (PHP 4 >= 4.0.2, PHP 5)
object odbc_fetch_object ( resource result [, int rownumber] )

Fetch an object from an ODBC query. See the changelog below for when this function is available.

Parameters

result

The result resource from odbc_exec().

rownumber

Optionally choose which row number to retrieve.

Return Values

Returns an object that corresponds to the fetched row, or FALSE if there are no more rows.

ChangeLog

Version Description
4.3.3 This function exists when compiled with IBM DB2 or UnixODBC support.
4.3.2 This function exists when compiled for Windows.
4.0.2 This function exists when compiled with DBMaker support.

Examples ( Source code ) » odbc_fetch_object


<?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);
?>

Code Examples / Notes » odbc_fetch_object

philip

This function requires one of the following to exist: Windows, DB2, or UNIXODBC.

masuod_a

This function not availible in PHP 4.1.1 , you can try this :
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;
}
if you wanna use this function in a loop  you must set rownumber parameter
you can't use this function like :
while ($myobj=odbc_fetch_object($res)) {
....
}


thorsten

odbc_fetch_object() works nice with PHP 4.3.3 under W2K with IBM DB2 V.7.2 and 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);
?>


h4

my 2 cents:
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;
}
works fine for me (PHP 4.3.1)


marcus dot karlsson

It' possible to get both odbc_fetch_object() and odbc_fetch_array() to work just by removing #ifdef HAVE_DBMAKER/#endif in php_odbc.h line 216 (219) and the same in php_odbc.c line 87 (90) and 1229 (1380).
I've done this sucessfully in the PHP 4.2.0 release using ODBC towards a MySQL database.
I really can't understand why the #ifdef is there from the beginning, but they do have their reasons.
These were the files i "patched"
/* $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 $ */


kynaston

If you're using Masoud's code in PHP4.2+, change the fifth line to:
odbc_fetch_into($result,&$rs);
(the order of arguments have changed)


charlesk

I asked one of the developers to enable this function in the CVS.  I tried it and it worked.  I didnt do anything special.  I was using a Microsoft Access ODBC driver that came with my Windows XP Pro Install.
I was using the Apache web server.
Charles


j dot a dot z

hey "general at maccrafters dot com"
thank you very much for your code. it saved me time!
however i extended it a bit!
---------------------------------------------
   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;
   }
---------------------------------------------
cheers, jaz


general

Here's a bit of code I came up with tha behaves just like 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);
}
Special thanks to previous posters for giving me a starting point for this code.


Change Language


Follow Navioo On Twitter
odbc_autocommit
odbc_binmode
odbc_close_all
odbc_close
odbc_columnprivileges
odbc_columns
odbc_commit
odbc_connect
odbc_cursor
odbc_data_source
odbc_do
odbc_error
odbc_errormsg
odbc_exec
odbc_execute
odbc_fetch_array
odbc_fetch_into
odbc_fetch_object
odbc_fetch_row
odbc_field_len
odbc_field_name
odbc_field_num
odbc_field_precision
odbc_field_scale
odbc_field_type
odbc_foreignkeys
odbc_free_result
odbc_gettypeinfo
odbc_longreadlen
odbc_next_result
odbc_num_fields
odbc_num_rows
odbc_pconnect
odbc_prepare
odbc_primarykeys
odbc_procedurecolumns
odbc_procedures
odbc_result_all
odbc_result
odbc_rollback
odbc_setoption
odbc_specialcolumns
odbc_statistics
odbc_tableprivileges
odbc_tables
eXTReMe Tracker