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] )

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