Bug #80808 [Opn]: PDO returns ZEROFILL integers without leading zeros
Edit report at https://bugs.php.net/bug.php?id=80808&edit=1
ID: 80808
Updated by: requinix@php.net
Reported by: matty at themad dot com dot au
Summary: PDO returns ZEROFILL integers without leading zeros
Status: Open
Type: Bug
Package: PDO MySQL
Operating System: Windows
PHP Version: Next Minor Version
Block user comment: N
Private report: N
New Comment:
Discussion: https://externals.io/message/113294
Previous Comments:
------------------------------------------------------------------------
[2021-02-27 10:44:38] matty at themad dot com dot au
Description:
------------
PDO originally returns integers and floats as a string. As of PHP 8.1 it will return them as
integers.
Note: A ZEROFILL integer is where an integer will be left padded with 0's until it reaches a
certain length.
Since PHP doesn't support leading zero's in an integer they're removed.
8.0.2
string(10) "0742130050"
8.1.0-dev
int(742130050)
PDO should not lose data.
The solution I suggest is
Test script:
---------------
CREATE TABLE test ( postcode INT(4) UNSIGNED ZEROFILL NULL );
INSERT INTO test (postcode) VALUES ('0800');
SELECT * FROM test;
MariaDB [schools]> SELECT * FROM test;
+----------+
| postcode |
+----------+
| 0800 |
+----------+
1 row in set (0.000 sec)
$stmt = $pdo->prepare('SELECT * FROM test;');
$stmt->execute();
$result = $stmt->fetchObject();
var_dump($result->postcode);
Expected result:
----------------
string(4) "0800"
Actual result:
--------------
int(800)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=80808&edit=1
Thread (4 messages)