How to return numerics in JSON data from a PHP PDO MySQL query. Usually and as default all of the data is returned as strings.
The following example SELECT code:
<?php
header('Content-Type: application/json');
$db = new PDO('mysql:host=127.0.0.1;dbname=test;charset=utf8mb4', 'root', '');
$select = $db->query("SELECT * FROM `example1`;");
echo json_encode($select->fetch(PDO::FETCH_ASSOC));Will return
{
"id": "5286",
"classname": "GoldApple",
"price": "2.2",
"quantity": "80",
"instock": "1",
"brand": "Green Orchards",
"updated": "2021-06-09 12:42:38"
}To not show numbers as strings the following PDO attributes need to be set after the connection is made:
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
To disable emulation on prepared statements and also convert numeric values to string disabled.
The returned data will now look like this:
{
"id": 5286,
"classname": "GoldApple",
"price": 2.2,
"quantity": 80,
"instock": 1,
"brand": "Green Orchards",
"updated": "2021-06-09 12:42:38"
}Whereby the values have correct data formatting with numerics and strings.
