|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2021-02-27 21:21 UTC] requinix@php.net
[2021-03-01 15:57 UTC] nikic@php.net
-Status: Open
+Status: Verified
[2021-03-01 15:57 UTC] nikic@php.net
[2021-03-02 09:59 UTC] nikic@php.net
[2021-03-02 09:59 UTC] nikic@php.net
-Status: Verified
+Status: Closed
|
|||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 29 20:00:01 2025 UTC |
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)