|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2015-07-01 12:09 UTC] yohgaki@php.net
[2015-07-01 12:18 UTC] yohgaki@php.net
[2015-07-02 16:25 UTC] ryan dot jentzsch at gmail dot com
[2020-12-11 10:39 UTC] nikic@php.net
-Status: Open
+Status: Wont fix
[2020-12-11 10:39 UTC] nikic@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Oct 26 23:00:02 2025 UTC |
Description: ------------ PHP 7 PDO MySQL with PDO::MYSQL_ATTR_DIRECT_QUERY fetching MySQL DECIMAL type as string type, but expected any type of number type (etc. double). Tested at Debian sid X64 with latest packages Test script: --------------- <?php declare(strict_types=1); /* create database `php7` default charset 'utf8'; use `php7`; create table `types` ( `id` int unsigned not null primary key, `signed_int` int signed, `unsigned_int` int unsigned, `signed_float` float signed, `unsigned_float` float unsigned, `signed_decimal` decimal(10,2) signed, `unsigned_decimal` decimal(10,2) unsigned ); insert into `types` (`id`, `signed_int`, `unsigned_int`, `signed_float`, `unsigned_float`, `signed_decimal`, `unsigned_decimal`) values ('1', '-30', '44', '-300.33', '334.00033', '-324.34', '64.23') ; */ $dbh = new PDO( "mysql:host=localhost;dbname=php7;unix_socket=/var/run/mysqld/mysqld.sock", "root" ); $dbh->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY, false); $sth = $dbh->prepare("select * from `types`"); $sth->execute(); $row = $sth->fetchObject("stdClass"); print "Type of `id`:" . gettype( $row->id ) . "\n"; print "Type of `signed_int`:" . gettype( $row->signed_int ) . "\n"; print "Type of `unsigned_int`:" . gettype( $row->unsigned_int ) . "\n"; print "Type of `signed_float`:" . gettype( $row->signed_float ) . "\n"; print "Type of `unsigned_float`:" . gettype( $row->unsigned_float ) . "\n"; print "Type of `signed_decimal`:" . gettype( $row->signed_decimal ) . "\n"; print "Type of `unsigned_decimal`:" . gettype( $row->unsigned_decimal ) . "\n"; Expected result: ---------------- Type of `id`:integer Type of `signed_int`:integer Type of `unsigned_int`:integer Type of `signed_float`:double Type of `unsigned_float`:double Type of `signed_decimal`:double Type of `unsigned_decimal`:double Actual result: -------------- Type of `id`:integer Type of `signed_int`:integer Type of `unsigned_int`:integer Type of `signed_float`:double Type of `unsigned_float`:double Type of `signed_decimal`:string Type of `unsigned_decimal`:string