Bug #14278 Updated: % and / bug with INTEGERs!

From: Date: Tue, 09 Apr 2002 22:12:40 +0000
Subject: Bug #14278 Updated: % and / bug with INTEGERs!
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-4486@lists.php.net to get a copy of this message
ID: 14278 Updated by: jimw@php.net Reported By: pumuckel@metropolis.de Status: Open -Bug Type: Math related +Bug Type: OCI8 related Operating System: Linux 2.2.19 PHP Version: 4.0.6 New Comment: recategorizing as an oci8 issue. Previous Comments: ------------------------------------------------------------------------ [2002-01-09 09:17:14] pumuckel@metropolis.de After some more investigation on this bug I noticed following: I have an OCI insert statement executed with a 'RETURNING INTO' clause. The value which is returned is a oracle DB entry of type NUMBER. I expected to have the returned value in PHP to be a number as well. BUT it is a string! Some more output I produced in my script is: <? echo("$num (type: ".gettype($num)."[".strlen($num)."] - ".($num*1).")"); ?> The result (when the error occures): 106851 (type: string[6] - 1068514) As you can see the value of the $num variable changes while automatic type casting from string to int is executed. The reason for the NEW (bigger) value is possibly a not null terminated string value returned by the OCI interface. My suggestion: While typecasting from string to int an extra check should be done (e.g. detect if there is a null terminated string and if not: terminate it). Thanks for your patch! ------------------------------------------------------------------------ [2001-12-20 12:48:09] sander@php.net No feedback. Closing. ------------------------------------------------------------------------ [2001-11-29 15:42:41] cnewbill@php.net E:\php>php -v 4.0.6 E:\php>php -q test.php 101110 22 3888 14 149 19 5 5 0 0 0 0 AAFTOW No matter how many times I run this script I always get this. Also tested it on Linux (2.4), with PHP 4.2.0-dev and it works. Please try a newer version and see if that fixes the problem you're having. http://www.php.net/~zeev/php-4.1.0RC3.tar.gz or http://snaps.php.net/php4-latest.tar.gz -Chris ------------------------------------------------------------------------ [2001-11-29 05:27:51] pumuckel@metropolis.de Sometimes (1 - 10 times a day) I get a strange error on one of my production servers. See this function: function MakeHash($num) { $ret = ""; $ca = array(); for ($i = 0; $i < 6; $i++) { $c = $num % 26; $ca[] = "$num $c"; $ret = sprintf("%c", 65+$c).$ret; $num = ($num-$c)/ 26; } // Send $ca array via email to me.... (removed) return $ret; } Sometimes calling this function with an INT it calculates wired results... If that happens I mail the $ca array to myself and see what it does: 101110 19 (MEANS: 101110 % 26 is 19!? That's wrong, it is 22) 38888588 24 (MEANS 101110 / 26 is 38888588, but it is 3888) 1495714 12 ... 57527 15 2212 2 85 7 What goes wrong? In the beginning the % result is wrong, and then the division result is wrong too... any suggestions!? /mike ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=14278&edit=1

« previous php.bugs (#4486) next »