0

这是我的小脚本

$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”来自哪里?这是正常的吗?

4

5 回答 5

2

这是正常的。mysql_fetch_array返回具有数字索引和关联索引的行。这不是 O,而是 0,表示第一个返回的列。

于 2012-06-22T18:04:37.707 回答
2

mysql_fetch_array 返回一个字符串关联和一个数字关联。单独尝试 mysql_fetch_assoc 或 mysql_fetch_row。

于 2012-06-22T18:05:55.260 回答
0

请参阅mysql_fetch_array的文档:默认情况下,它返回一个包含数字和字符串索引的数组。如果您只想要一个关联数组,请使用mysql_fetch_assoc或添加 MYSQL_ASSOC 作为 mysql_fetch_array 的第二个参数。

于 2012-06-22T18:07:14.807 回答
0

发生这种情况是因为,正如文档所述,默认情况下mysql_fetch_array会返回关联数组和数字数组。如果您只想要关联结果,您可以传递一个额外的参数,如下所示:

$row = mysql_fetch_array($result, MYSQL_ASSOC);

或者,如果您只想对数组进行数字索引:

$row = mysql_fetch_array($result, MYSQL_NUM);
于 2012-06-22T18:07:39.537 回答
0

只需更换

$row = mysql_fetch_array($result);

$row = mysql_fetch_array($result, MYSQL_ASSOC);

零将消失。

您可以选择 3 种结果类型。MYSQL_NUM将返回一个数值数组,MYSQL_ASSOC将返回一个关联数组,这也是您似乎需要的,而MYSQL_BOTH是默认值并返回两者。

于 2012-06-22T18:09:32.043 回答