我正在尝试添加从查询中检索到的所有行的内容。
到目前为止,我已经尝试过:
$totalquery = "SELECT SUM(catalogue.price) AS fCount
FROM catalogue LEFT JOIN orders ON catalogue.plantid = orders.orderplantid
WHERE orders.orderplantid = '$actualresult' AND orders.ordercustomerid = '$actualresult2' GROUP BY catalogue.price";
$result3 = mysql_query($totalquery) or die ("Query failed : " . mysql_error());
$totalresult = mysql_result($result3,0);
然后回显$ totalresult,但问题只显示最后一个值,而不是所有选定值的总和 - 我出错的地方的任何想法?
答案 0 :(得分:2)
从行尾删除GROUP BY catalogue.price
; sum命令是aggregate functions之一。
答案 1 :(得分:1)
如果分组导致形成多个组,则需要在循环中检索行:
while($row = mysql_fetch_assoc($result3)) {
$total = $row['fCount'];
... do something with total ...
}
现在看来,你只是获取第一个求和值并扔掉其余值。
答案 2 :(得分:0)
很可能是因为有多个结果而不是一个结果。并且因为您没有循环遍历数组并将所有值存储到视图中,所以您只看到结果集的最后一个值,因为它是$ totalresult变量的最后一个赋值。 ..
尝试mysql_fetch_assoc($ result3)或mysql_fetch_array($ result3)并遍历结果以获取所有返回的信息......
答案 3 :(得分:0)
而不是mysql_result()
使用mysql_fetch_array()
答案 4 :(得分:0)
尝试删除GROUP BY
声明。
此外,如果从用户输入$actualresult
和$actualresult2
,请务必转义这些以避免SQL注入攻击:
$totalquery= "... WHERE orders.orderplantid = '" . mysql_real_escape_string($actualresult) . "' AND orders.ordercustomerid = '" . mysql_real_escape_string($actualresult2) . "'";