这是我的小脚本
$item="Inception";
$query="SELECT * FROM items WHERE item = '{$item}' LIMIT 1";
$result=mysql_query($query);
while ($row = mysql_fetch_array($result)) {
$item_id = $row['items_id'];
}
$sql="SELECT AVG(rating) AS AverageRating FROM ratings WHERE item_id = '{$item_id}'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
print(json_encode($row));
输出是这样的:
{"0":"4.5","AverageRating":"4.5"}
我的问题是:行“0”来自何处?这是正常的吗?
答案 0 :(得分:2)
这很正常。 mysql_fetch_array
返回包含数字和关联索引的行。那不是O,而是0,意思是第一个返回的列。
答案 1 :(得分:2)
mysql_fetch_array返回字符串关联和数字关联。单独尝试mysql_fetch_assoc或mysql_fetch_row。
答案 2 :(得分:0)
请参阅mysql_fetch_array的文档:默认情况下,它返回一个包含数字和字符串索引的数组。如果只想要一个关联数组,请使用mysql_fetch_assoc或添加MYSQL_ASSOC作为mysql_fetch_array的第二个参数。
答案 3 :(得分:0)
这种情况正在发生,因为documentation状态默认情况下mysql_fetch_array
会返回关联数组和数字数组。如果您只想要关联结果,可以传递一个额外的参数,如下所示:
$row = mysql_fetch_array($result, MYSQL_ASSOC);
或者,如果您只想数字索引数组:
$row = mysql_fetch_array($result, MYSQL_NUM);
答案 4 :(得分:0)
简单地替换
$row = mysql_fetch_array($result);
与
$row = mysql_fetch_array($result, MYSQL_ASSOC);
零将消失。
您可以选择3种结果类型。 MYSQL_NUM 会返回一个数值数组 MYSQL_ASSOC ,它会返回一个关联数组,也是你看来需要的, MYSQL_BOTH 这是默认并返回两者。