ID: 11953 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Open +Status: Closed Bug Type: InterBase related Operating System: Linux PHP Version: 4.0.5 New Comment:
Thank you for your bug report. This issue has already been fixed in the latest released version of PHP, which you can download at http://www.php.net/downloads.php Previous Comments: ------------------------------------------------------------------------ [2001-07-07 22:23:21] [EMAIL PROTECTED] When the database column has type NUMERIC(10,3) and you stored value 12.01, when you would like to retrieve it you get 10.1. Following patch fixes this bug. Regards, Libor Chocholaty --- php-4.0.5-orig/ext/interbase/interbase.c Mon Feb 26 07:07:00 2001 +++ php-4.0.5/ext/interbase/interbase.c Sun Jul 8 04:02:11 2001 @@ -25,6 +25,10 @@ /* Changes: + 2001-07-08: Libor Chocholaty <[EMAIL PROTECTED]> + - fixed problem with conversion from numeric + with decimal places internally stored as + ISC_INT64 to string. 1999-09-21: Ivo Panacek <[EMAIL PROTECTED]> - added COMPILE_DL section - more verbose php_info_ibase function @@ -1778,11 +1782,24 @@ break; #ifdef SQL_INT64 case SQL_INT64: - val->type = IS_STRING; - val->value.str.len = sprintf(string_data, "%Ld.%Ld", - (ISC_INT64) (*((ISC_INT64 *)data) / (int) pow(- (ISC_INT64) abs((int) (*((ISC_INT64 *)data) % - val->value.str.val = estrdup(string_data); + { + char aux_str[40], *fract; + long long aux_long = (ISC_INT64) abs((int) (*((ISC_INT64 *)data) % (int) pow(10.0, (double) -sc+ sprintf(aux_str, "0000000000000000000%Ld", aux_long); + fract = aux_str + strlen(aux_str) + scale; + + + val->type = IS_STRING; + + sprintf(string_data, "%Ld", (ISC_INT64) (*((ISC_INT64 *)data) / (int) pow(10.0, (double) -scale+ if (aux_long) + { + strcat(string_data, "."); + strcat(string_data, fract); + } + val->value.str.len = strlen(string_data); + val->value.str.val = estrdup(string_data); + } break; #endif #ifndef SQL_TIMESTAMP ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=11953&edit=1
