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'] 什么也不打印,我收到一条消息说未定义索引答案。

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);

或者,为了更好地格式化网页:

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

TIP: Always have a look in the PHP Manual.

The mysql_fetch_assoc() extension is deprecated as of PHP 5.5.0, because the MySQLi and PDO extensions should be used instead. Just to quote the manual

If you want to debug your code use:

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

This will echo the array / object formatted, so it'll be easier for you to read.

var_dump will be less readable as it shows types (e.g. string) and string length.

The PHP Arrays Manual will teach you more on how to use arrays.

Happy reading :-)

于 2013-07-10T20:15:35.557 回答