<?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]
时,我得到以下未定义的偏移:0并且它什么都不打印。我需要在echo语句中使用此变量。另外,$ Sum ['Answer']什么都不打印,我得到一条消息说未定义索引答案。
答案 0 :(得分: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' ";
答案 1 :(得分: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']
)。
答案 2 :(得分:0)
提示:请务必查看PHP Manual。
自PHP 5.5.0起,不推荐使用mysql_fetch_assoc()扩展,因为应该使用MySQLi和PDO扩展。 Just to quote the manual ...
如果要调试代码,请使用:
echo '<pre>' . print_r($result, true) . '</pre>';
这将回显格式化的数组/对象,因此您可以更轻松地阅读。
var_dump的可读性较差,因为它显示了类型(例如字符串)和字符串长度。
PHP Arrays Manual将教你如何使用数组。
快乐阅读: - )