我想将准备好的语句的结果存储到数组中,然后转换为json。但是我没有得到我想要的json所需的格式。
$stmt = $conn->prepare("select course_id,course_name from mas_course");
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($courseid, $coursename);
$cnt = $stmt->num_rows;
$myObj = array();
while ($stmt->fetch()) {
$myObj['courseid'][] = $courseid;
$myObj['coursename'][] = $coursename;
}
$myJSON = json_encode($myObj);
echo $myJSON;
它给了我类似
的输出{
"id": ["123", "345"],
"name": ["abc", "xyz"]
}
但是我想要
[{
"id": "123",
"name": "abc"
},
{
"id": "345",
"name": "xyz"
}]
答案 0 :(得分:2)
要获得所需格式的json,数据库中的每一行都必须是输出json中的条目-创建一个数组并在循环中添加到其中
$output=[];
while( $stmt->fetch() ) $output[]=(object)array(
'id' => $courseid,
'name' => $coursename
);
$json=json_encode( $output );
答案 1 :(得分:2)
您以错误的顺序将结果添加到结果中,但是由于仅获取所需的列,因此可以缩短使用fetch_all()
的时间,这将获取所有数据而无需循环... < / p>
$output = $stmt->fetch_all(MYSQLI_ASSOC);
$json=json_encode( $output );
如果您希望列在数组中具有不同的名称,请在SQL中使用别名来设置名称。