note 94629 added to function.json-encode
| From: | me at daniel dot ie | Date: | Sun, 15 Nov 2009 16:45:12 +0000 |
| Subject: | note 94629 added to function.json-encode | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-162936@lists.php.net to get a copy of this message | ||
I had trouble putting the results of mysql_fetch_assoc() through json_encode: numbers being returned
from the query were being quoted in the JSON output (i.e., they were being treated as strings). In
order to fix this, it is necessary to explicitly cast each element of the array before json_encode()
is called.
The following code uses metadata from a MySQL query result to do this casting.
<?php
$mysql = mysql_connect('localhost', 'user', 'password');
mysql_select_db('my_db');
$query = 'select * from my_table';
$res = mysql_query($query);
// iterate over every row
while ($row = mysql_fetch_assoc($res)) {
// for every field in the result..
for ($i=0; $i < mysql_num_fields($res); $i++) {
$info = mysql_fetch_field($res, $i);
$type = $info->type;
// cast for real
if ($type == 'real')
$row[$info->name] = doubleval($row[$info->name]);
// cast for int
if ($type == 'int')
$row[$info->name] = intval($row[$info->name]);
}
$rows[] = $row;
}
// JSON-ify all rows together as one big array
echo json_encode($rows);
mysql_close($mysql);
?>
----
Server IP: 193.95.141.37
Probable Submitter: 87.198.20.148
----
Manual Page -- http://www.php.net/manual/en/function.json-encode.php
Edit -- https://master.php.net/note/edit/94629
Del: integrated -- https://master.php.net/note/delete/94629/integrated
Del: useless -- https://master.php.net/note/delete/94629/useless
Del: bad code -- https://master.php.net/note/delete/94629/bad+code
Del: spam -- https://master.php.net/note/delete/94629/spam
Del: non-english -- https://master.php.net/note/delete/94629/non-english
Del: in docs -- https://master.php.net/note/delete/94629/in+docs
Del: other reasons-- https://master.php.net/note/delete/94629
Reject -- https://master.php.net/note/reject/94629
Search -- https://master.php.net/manage/user-notes.php