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

Reply via email to