Skip to content

Incorrect NUMERIC value returned from Firebird PDO query in PHP 8.1 #9971

Closed
@clarumedia

Description

@clarumedia

Description

The following code:

//$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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions