--TEST-- GH-11587 PHP8.1: Fixed the condition for result set values to be of native type, making it compatible with previous versions. #11622 --EXTENSIONS-- pdo_mysql --SKIPIF-- --FILE-- exec($createTestTable); $insertTestTable = <<exec($insertTestTable); echo "PDO::ATTR_EMULATE_PREPARES = true, PDO::ATTR_STRINGIFY_FETCHES = true\n"; $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true); $results = $db->query('SELECT * FROM test_11587'); foreach ($results as $result) { var_dump($result); } echo "\n"; echo "PDO::ATTR_EMULATE_PREPARES = true, PDO::ATTR_STRINGIFY_FETCHES = false\n"; $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); $results = $db->query('SELECT * FROM test_11587'); foreach ($results as $result) { var_dump($result); } echo "\n"; echo "PDO::ATTR_EMULATE_PREPARES = false, PDO::ATTR_STRINGIFY_FETCHES = true\n"; $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true); $results = $db->query('SELECT * FROM test_11587'); foreach ($results as $result) { var_dump($result); } echo "\n"; echo "PDO::ATTR_EMULATE_PREPARES = false, PDO::ATTR_STRINGIFY_FETCHES = false\n"; $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); $results = $db->query('SELECT * FROM test_11587'); foreach ($results as $result) { var_dump($result); } echo "\n"; echo 'done!'; ?> --CLEAN-- exec('DROP TABLE IF EXISTS test_11587'); ?> --EXPECT-- PDO::ATTR_EMULATE_PREPARES = true, PDO::ATTR_STRINGIFY_FETCHES = true array(8) { ["id"]=> string(1) "1" [0]=> string(1) "1" ["float_col"]=> string(4) "2.60" [1]=> string(4) "2.60" ["double_col"]=> string(4) "3.60" [2]=> string(4) "3.60" ["decimal_col"]=> string(4) "4.60" [3]=> string(4) "4.60" } PDO::ATTR_EMULATE_PREPARES = true, PDO::ATTR_STRINGIFY_FETCHES = false array(8) { ["id"]=> int(1) [0]=> int(1) ["float_col"]=> float(2.6) [1]=> float(2.6) ["double_col"]=> float(3.6) [2]=> float(3.6) ["decimal_col"]=> string(4) "4.60" [3]=> string(4) "4.60" } PDO::ATTR_EMULATE_PREPARES = false, PDO::ATTR_STRINGIFY_FETCHES = true array(8) { ["id"]=> string(1) "1" [0]=> string(1) "1" ["float_col"]=> string(3) "2.6" [1]=> string(3) "2.6" ["double_col"]=> string(3) "3.6" [2]=> string(3) "3.6" ["decimal_col"]=> string(4) "4.60" [3]=> string(4) "4.60" } PDO::ATTR_EMULATE_PREPARES = false, PDO::ATTR_STRINGIFY_FETCHES = false array(8) { ["id"]=> int(1) [0]=> int(1) ["float_col"]=> float(2.6) [1]=> float(2.6) ["double_col"]=> float(3.6) [2]=> float(3.6) ["decimal_col"]=> string(4) "4.60" [3]=> string(4) "4.60" } done!