|
odbc_fetch_object
Fetch a result row as an object
(PHP 4 >= 4.0.2, PHP 5)
Examples ( Source code ) » odbc_fetch_object
Code Examples / Notes » odbc_fetch_objectphilip
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 Languageodbc_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 |