我正在尝试学习php,我编写了一些简单的代码来从我的数据库表中输出JSON对象。
目前,我的数据库表包含以下字段:
Field Name Type
-----------------------------
id int(9)
name varchar(255)
position varchar(255)
order int(9)
我编写了以下代码以输出为JSON:
$sql = "select id, name, position, order from table";
$q = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));
//create an array
$jsonData = array();
while($row = mysqli_fetch_assoc($q))
{
$index = 'item'.$row['id'].'';
$jsonData[$index] = $row;
}
echo json_encode($jsonData);
这会产生以下输出:
{
"item1": {
"id": "1",
"name": "Name",
"position": "Position",
"order": "1"
}
}
但是,id
和order
中的值将作为字符串输出。如何在php代码中指定返回id
中的值和`作为int的顺序,即没有引号(""),如我的数据库表中所指定的那样?
我确定它一定是愚蠢的简单,但我试图理解基础知识,而不是真正确定如何去做。
答案 0 :(得分:2)
mysqli_fetch_assoc
仅以字符串格式提供,而不是任何其他格式。你必须明确地这样做。
返回表示结果集中获取的行的关联字符串数组,其中数组中的每个键表示结果集列之一的名称或NULL如果结果集中没有更多行。
$jsonData = array();
while($row = mysqli_fetch_assoc($q)) {
$index = 'item'.$row['id'].'';
$row["id"] = intval($row["id"]);
$row["order"] = intval($row["order"]);
$jsonData[$index] = $row;
}
我同意并意识到如果有更多字段需要转换,这是一个繁琐的过程。