0
<?php
    $result = $mysqli->query(SELECT SUM(Answer) as answer FROM answers WHERE SID ='$uname'");
            $Sum = $result->fetch_row();
    var_dump($Sum);
?>

上記のコードを実行すると、次のようになります:Array ( [SUM(Answer)] => 8 )ただし、アクセスしようとする$Sum[0]と、次の Undefined offset: 0 が返され、何も出力されません。この変数を echo ステートメントで使用する必要があります。また、$Sum['Answer'] は何も出力せず、undefined index Answer というメッセージを受け取りました。

4

3 に答える 3

4

mysql_fetch_assoc数値配列ではなく連想配列を返すため、0 は未定義のインデックスになります。PHP 配列は、他の言語とは異なり、自動的に数値インデックスを持ちません。

数値インデックスを使用する場合は、 を使用mysql_fetch_arrayして、連想インデックスと数値インデックスの両方を持つ配列を取得する必要があります。ただし、連想配列に固執する必要がある場合は、適切なキーを使用する必要があります。

$Sum['SUM(Answer)'];

SQL は SUM(Answer) に名前を付けないため、キーは珍しいので、更新して名前を付けることをお勧めします。

$SQL = "SELECT SUM(Answer) as answer FROM answers WHERE SID ='$uname' ";
于 2013-07-10T20:08:11.017 に答える
3

配列またはオブジェクトの値を出力し、そのすべてのメンバー/プロパティを表示する場合は、print_r関数を使用します。

print_r($Sum);

または、Web ページの書式設定を改善するには:

echo '<pre>' . print_r($Sum, true) . '</pre>';

編集後: var_dump は正しいため、次のように名前で列にアクセスする必要があります。

$Sum['SUM(Answer)']

これが気に入らない場合は、列の名前を変更してください (SELECT SUM(Answer) AS sum FROM...またはそのようなものであれば、変更できます$Sum['sum'])。

于 2013-07-10T20:06:38.853 に答える
0

ヒント: PHP Manualを常に参照してください。

代わりに MySQLi および PDO 拡張を使用する必要があるため、mysql_fetch_assoc() 拡張は PHP 5.5.0 で非推奨になりました。マニュアルを引用するだけで

コードをデバッグする場合は、次を使用します。

echo '<pre>' . print_r($result, true) . '</pre>';

これにより、フォーマットされた配列/オブジェクトがエコーされるため、読みやすくなります。

var_dump は、タイプ (文字列など) と文字列の長さを示すため、読みにくくなります。

PHP Arrays Manual では、配列の使用方法について詳しく説明しています。

幸せな読書 :-)

于 2013-07-10T20:15:35.557 に答える