ID: 10192
User Update by: [EMAIL PROTECTED]
Old-Status: Feedback
Status: Open
Bug Type: Sybase (dblib) related
Operating system: Linux Mandrake (redhat) 7.0
PHP Version: 4.0.3pl1
Description: sybase_query with sybase_fetch_row displays real data type incorrectly


I don't know if it occurs with 4.0.5.  I tested through 4.0.4pl1 at the time of the 
posting.  Here's the solution I recieved from Dean B.  I assumed he posted it to this 
Bug report.  He didn't, so here it is:

Try this patch, which also adds support for FLT8.  Also, this applies to both PHP3 and 
PHP4, and the sybase_ct functions don't have this problem.

--- sybase.c.orig       Mon Feb  7 16:54:51 2000
+++ sybase.c    Mon Apr  3 12:12:00 2000
@@ -635,9 +640,13 @@
                         result->type = IS_STRING;
                         break;
                 }
-               /*case SYBFLT8:*/
+               case SYBFLT8:
+                       result->value.dval = *(DBFLT8 
*)dbdata(sybase_ptr->link,offset);
+                       result->type = IS_DOUBLE;
+                       break;
+
                 case SYBREAL: {
-                       result->value.dval = (double) floatcol(offset);
+                       result->value.dval = (double)(*(DBREAL 
*)dbdata(sybase_ptr->link,offset));
                         result->type = IS_DOUBLE;
                         break;
                 }


I tried to migrate to the ct version (compiled and executed fine) but had issues with 
some sort of link index error with my code.  So I decided to delay migration for now.  
THIS case can be closed.


Previous Comments:
---------------------------------------------------------------------------

[2001-06-12 17:42:44] [EMAIL PROTECTED]
Does this happen with PHP 4.0.5 ?


---------------------------------------------------------------------------

[2001-04-05 16:06:31] [EMAIL PROTECTED]
Queries that produce incorrect data is random, but will consistently happen within a 
particular query.  In one case, the last value of a fetched row (a real), in the last 
row was "1" in the database, but the returned array always displayed "0".  In another 
case, a value (a real) in the middle of the returned array in the database was 
supposed to be "65000" but the fetched array contained "0".  In both cases I copied 
the query from the code EXACTLY and ran it in isql and those results were correct.  So 
the errors are occuring somewhere in php land.  This error seems serious since no 
errors/messages are produced, but the data displayed is incorrect.  Sybase's real data 
type is machine-dependent, and my database is on a Solaris system.  But if isql on my 
linux php machine fetches data correctly, I would expect php to be able to do the 
same.

Complied with: 
--with-apxs=/usr/sbin/apxs
--with-sybase=/opt/sybase
--without-mysql
--with-layout=RedHat
--enable-shared=max

---------------------------------------------------------------------------


Full Bug description available at: http://bugs.php.net/?id=10192


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to