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_fetch_array の 2 番目のパラメーターとして MYSQL_ASSOC を追加します。

于 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 に答える