我在stackoverflow上看到很多线程,人们将数组转换为json。 我很确定这应该有效,但事实并非如此。 MySQL很好,查询按预期工作:
$json = array();
if($result = $mysqli->query($query)){
while($row = $result->fetch_array()){
$json[]["id"] = $row[0];
$json[]["trivialname"] = $row[1];
$json[]["chemischername"] = $row[2];
$json[]["formel"] = $row[3];
}
echo $json[0]["id"]; //just for testing.
echo json_encode($json);
}
抱歉英语不好。
我的问题主要是echo json_encode($ json);没有显示任何东西
编辑: 我的代码看起来像这个atm。
if($result = $mysqli->query($query)){
$json = array();
while($row = $result->fetch_assoc()){
$json[]=$row;
printf("%s (%s) ID: %s, Formel:%s <br>", $row["Trvialname"], $row["Chemischername"], $row["ID"],$row["Formel"]);
}
echo json_encode($json);
}
它告诉我这个:
Phthalimid (1,2-Benzoldicarboximid) ID: 2, Formel:C8H5NO2
Phthalsäureanhydrid (2-Benzofuran-1,3-dion) ID: 3, Formel:C8H4O3
echo json_encode($json);
到
echo json_encode($json[0]);
它将添加以下行:
{"ID":"2","Trvialname":"Phthalimid","Chemischername":"1,2-Benzoldicarboximid","Formel":"C8H5NO2"}
foreach($json[1] as $value){
echo $value."<br>";
}
将显示除
之外的所有内容echo json_encode($json[1]);
犯规。
解决方案
$mysqli->set_charset('utf8');
感谢您的常识
答案 0 :(得分:2)
将您的代码更新为
$json = array();
if($result = $mysqli->query($query)){
while($row = $result->fetch_array()){
$r = array();
$r["id"] = $row[0];
$r["trivialname"] = $row[1];
$r["chemischername"] = $row[2];
$r["formel"] = $row[3];
$json[] = $r;
}
echo $json[0]["id"]; //just for testing.
echo json_encode($json);
}
答案 1 :(得分:2)
$json = array();
while($row = $result->fetch_assoc()){
$json[] = $row;
}
echo json_encode($json);
在我的整个生命中,我永远不会理解为什么PHP用户总是为每个小事操作编写如此多的代码
您也可以尝试json_last_error()然后将此调用添加到您的mysqli连接代码
$mysqli->set_charset('utf8');
答案 2 :(得分:0)
您没有按照自己的方式构建阵列。您要添加的每个元素都是在数组中添加 new 行,这是$json[]
的作用。您最终会得到一个类似于以下内容的数组:
array(
array('id' => 1),
array('trivialname' => 'foo'),
# etc.
)
您想要做的是:
$json[] = array(
"id" => $row[0],
"trivialname" => $row[1],
"chemischername" => $row[2],
"formel" => $row[3]
);
这将构建您想要的结构。