ID: 38380 Updated by: [EMAIL PROTECTED] Reported By: khalid at pixelcraze dot com -Status: Open +Status: Bogus Bug Type: MySQLi related Operating System: FC4 PHP Version: 5.1.4 New Comment:
Floating point values have a limited precision. Hence a value might not have the same string representation after any processing. That also includes writing a floating point value in your script and directly printing it without any mathematical operations. If you would like to know more about "floats" and what IEEE 754 is read this: http://docs.sun.com/source/806-3568/ncg_goldberg.html Thank you for your interest in PHP. $number = 10354520101202315; is not int, it's float. Previous Comments: ------------------------------------------------------------------------ [2006-08-08 13:28:04] khalid at pixelcraze dot com Description: ------------ When sending a large number (e.g. 10354520101202315) via a prepared stmt, the end result in MySQL is not correct. MySQL 4.1.19 Reproduce code: --------------- CREATE TABLE `test` (`number` bigint(20) NOT NULL default '0') ENGINE=MyISAM DEFAULT CHARSET=latin1 $db = &new MySQLi($host,$user,$pass,$dbname); $stmt = $db->stmt_init(); $sql = "INSERT INTO test (number) VALUES (?)"; $stmt->prepare($sql); $stmt->bind_param('d',$number); $number = 10354520101202315; $result = $stmt->execute(); Expected result: ---------------- Result in MySQL is 10354520101202316 - it should be 10354520101202315. If I use a normal INSERT statement, then it works as expected. Changing the bind type to 's' then that works, but I have to change $number to $number = '10354520101202315'; Actual result: -------------- MySQL reports number as 10354520101202316 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=38380&edit=1
