[php-src] Issue #9971: Incorrect NUMERIC value returned from PDO query in PHP 8.1

From: Date: Fri, 18 Nov 2022 16:18:20 +0000
Subject: [php-src] Issue #9971: Incorrect NUMERIC value returned from PDO query in PHP 8.1
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-242851@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/9971 Author: clarumedia ### Description The following code: ```php //$pdo already connected with no dialect specified (Defaults to 3 ?) $sql="SELECT SOME_INDEX, SOME_NUMERIC_FIELD, CAST (SOME_NUMERIC_FIELD AS VARCHAR(255)) AS SOME_NUMERIC_FIELD_STRING FROM MYTABLE WHERE SOME_INDEX='1234' "; $objPDOStatement=$pdo->query($sql); foreach($objPDOStatement as $arrRow){ print_r($arrRow); exit; } ``` Resulted in this output in PHP 8.1.12 : ``` Array ( [SOME_INDEX] => 1234 [0] => 1234 [SOME_NUMERIC_FIELD] => 0.00000000 [1] => 0.00000000 [SOME_NUMERIC_FIELD_STRING] => 1.00000000 [2] => 1.00000000 ) ``` But I expected this output instead as per PHP 7.4: ``` Array ( [SOME_INDEX] => 1234 [0] => 1234 [SOME_NUMERIC_FIELD] => 1.00000000 [1] => 1.00000000 [SOME_NUMERIC_FIELD_STRING] => 1.00000000 [2] => 1.00000000 ) ``` Both report LI-V6.3.5.33220 Firebird 3.0 from a call to $pdo->getAttribute(PDO::ATTR_CLIENT_VERSION) Makes no difference if I set $pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true); ### PHP Version PHP 8.1.12 ### Operating System Ubuntu 20.04

« previous php.bugs (#242851) next »