ID: 34001 Updated by: [EMAIL PROTECTED] Reported By: james at safesearching dot com -Status: Open +Status: Assigned Bug Type: PDO related Operating System: * PHP Version: 5.1.0b3 -Assigned To: +Assigned To: wez New Comment:
Is the truncating supposed to happen? Previous Comments: ------------------------------------------------------------------------ [2005-08-10 04:01:33] james at safesearching dot com Tested php5-200508100030, and the junk character issue seems to be resolved, but values from the database are still being truncated. ------------------------------------------------------------------------ [2005-08-05 11:20:46] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip ------------------------------------------------------------------------ [2005-08-05 02:36:43] james at safesearching dot com Description: ------------ PDO seems to be trucating the value from MySQL when using the optional display width syntax (ie, mediumint(4)). >From http://dev.mysql.com/doc/mysql/en/numeric-types.html <quote> ... The display width does not constrain the range of values that can be stored in the column, nor the number of digits that are displayed for values having a width exceeding that specified for the column. </quote> I'm not sure if that is the goal of PDO here is to acutally constrain the display width, since I occasionally get junk characters after the specified length. ie: +-----------------+ | id mediumint(4) | +-----------------+ | 123456 | +-----------------+ value from PDO is '1234', but sometimes is '1234Àd' or other junk characters. Reproduce code: --------------- $c = new PDO( "mysql:dbname=test;host=localhost", '***', '***' ); // mysql mediumint // bytes: 3 // minimum: -8388608 / 0 // maximum: 8388607 / 16777215 $c->exec('CREATE TABLE IF NOT EXISTS foo (id mediumint(4), primary key (id));'); $c->exec("INSERT INTO foo VALUES (12345);"); $c->exec("INSERT INTO foo VALUES (1234567);"); $stmt = $c->prepare("SELECT * FROM foo"); $stmt->execute(); print_r($stmt->fetchAll()); Expected result: ---------------- Array ( [0] => Array ( [id] => 12345 [0] => 12345 ) [1] => Array ( [id] => 1234567 [0] => 1234567 ) ) Actual result: -------------- Array ( [0] => Array ( [id] => 1234 [0] => 1234 ) [1] => Array ( [id] => 1234 [0] => 1234 ) ) --- or sometimes ---- Array ( [0] => Array ( [id] => 1234À [0] => 1234À ) [1] => Array ( [id] => 1234ÀdL [0] => 1234ÀdL ) ) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=34001&edit=1