我正在使用MySQL数据库构建一个网页。我在这个项目中用MySQL查询创建了很多PHP脚本,所有这些脚本都运行正常。但是当我尝试在PHP上运行此查询时
$qry = mysqli_query($baglanti,"SELECT tedavi_adi
FROM tedaviler
INNER JOIN hastane_tedaviler
ON tedaviler.tedavi_id=hastane_tedaviler.tedavi_id
WHERE hastane_tedaviler.hastane_id=2
ORDER BY tedaviler.tedavi_adi ASC") or die("ERROR");
$treatments = array();
while ($row = mysqli_fetch_assoc($qry))
{
$treatments[] = $row;
}
echo json_encode($treatments);
它没有给出任何错误,但它返回空。
当我将json_encode($treatments)
代码移至while
循环时,它会在6个元素数组中提供前{2}个项目,如[x]
,[x,y]
,并提供前6个元素在10个元素阵列中。
查询在MySQL服务器上工作正常但不适用于PHP。我无法弄清楚。
解决:问题是来自服务器的土耳其字母字符,当我将它们更改为英文字符时,它已经起作用。
答案 0 :(得分:0)
我认为json_encode函数无法正确解析数组。
尝试输出所有字段(*)并查看json_encode是否正常工作。
$qry = mysqli_query($baglanti,"SELECT *
FROM tedaviler
INNER JOIN hastane_tedaviler
ON tedaviler.tedavi_id=hastane_tedaviler.tedavi_id
WHERE hastane_tedaviler.hastane_id=2
ORDER BY tedaviler.tedavi_adi ASC") or die("ERROR");
$treatments = array();
while ($row = mysqli_fetch_assoc($qry))
{
$treatments[] = $row;
}
echo json_encode($treatments);
如果它能正常工作,那么问题是你只想输出一个不正确的字段。