我在stackerflow上看到了许多线程,人们将数组转换为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(;不显示任何
编辑:我的密码看起来像这个自动取款机。
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');
感谢您的常识
$json = array();
while($row = $result->fetch_assoc()){
$json[] = $row;
}
echo json_encode($json);
在我的一生中,我永远不会理解为什么PHP用户总是为的每一个小操作编写这么多代码
您也可以尝试json_last_error((,然后将此调用添加到您的mysqli连接代码中
$mysqli->set_charset('utf8');
将代码更新为
$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);
}
您并没有按照您认为的方式构建数组。添加的每个元素都会向数组中添加一个新行,这就是$json[]
所做的。你最终会得到一个数组,看起来像:
array(
array('id' => 1),
array('trivialname' => 'foo'),
# etc.
)
你想做的是:
$json[] = array(
"id" => $row[0],
"trivialname" => $row[1],
"chemischername" => $row[2],
"formel" => $row[3]
);
这将建立你想要的结构。