我使用PHP从MySQL获取一行,然后使用以下代码将其编码为JSON
$jsonData = array();
if(mysqli_num_rows($result) > 0){
while ($array = mysqli_fetch_row($result)) {
$jsonData[] = $array;
}
$json = json_encode($jsonData);
echo stripslashes($json);
}`
但是,我只得到行值。我想要行值和它们的列名。目前它返回以下JSON。
[["shekhar","Shekhar Chatterjee","https://graph.facebook.com/1254850974526564/picture","0"]],[["shek","Shekhar Chatterjee","","0"]]
我想得到以下输出:
[{
"user":"shekhar",
"name":"Shekhar Chatterjee",
"url":"https://graph.facebook.com/1254850974526564/picture",
"stat":"0"
},{
"user":"shekhar",
"name":"Shekhar Chatterjee",
"url":"https://graph.facebook.com/1254850974526564/picture",
"stat":"0"
}]
答案 0 :(得分:7)
使用mysqli_fetch_assoc()
你去吧
$jsonData = array();
if(mysqli_num_rows($result) > 0){
while ($array = mysqli_fetch_assoc($result)) {
$jsonData[] = $array;
}
$json = json_encode($jsonData);
echo stripslashes($json);
}
答案 1 :(得分:4)
答案 2 :(得分:2)
您应该在此使用mysqli_fetch_assoc,以便它返回键作为列名。 mysqli_fetch_row返回数字数组键。
试试这个:
if (mysqli_num_rows($result) > 0) {
$jsonData[] = mysqli_fetch_assoc($result);
}
$json = json_encode($jsonData, JSON_PRETTY_PRINT);
答案 3 :(得分:1)
只需注意,您不需要执行额外的addslashes()
,您可以添加JSON_UNESCAPED_SLASHES
作为json_encode()
的第二个参数。
echo json_encode($jsonData, JSON_UNESCAPED_SLASHES);
答案 4 :(得分:0)
如果其他人在2018年遇到这种情况,这就是完整的例子。
<?php
header("Content-Type: application/json; charset=UTF-8");
$conn = new mysqli("host", "user", "password", "db_name");
$result = $conn->query("SELECT * FROM my_table");
$jsonData = array();
if(mysqli_num_rows($result) > 0){
while ($array = mysqli_fetch_assoc($result)) {
$jsonData[] = $array;
}
$json = '{"my_data":';
$json .= json_encode($jsonData);
$json .= '}';
echo stripslashes($json);
}
?>
...