从MySQL Fetch Assoc&编码JSON编码JSON获取数组

时间:2012-06-14 14:45:40

标签: php ajax json

我有这个PHP语法,并按预期工作:

$sqldata = mysql_query("
SELECT FirstName, LastName, NumberOfChildren, SchoolTuition FROM User WHERE User.Username = '$Username' LIMIT 1;
");

$rows = array();
while($r = mysql_fetch_assoc($sqldata)) {
  $rows[] = $r;
}

echo json_encode($rows);

现在,问题是我想计算总学费(NumberOfChildren * SchoolTuition),它必须在json_encode()函数之前完成。我的客户不想在他们的数据库上添加一个额外的列。

所以我必须使用PHP计算这个TOTAL School Tuition并将它放回$ rows数组作为json_encode之前的数组的最新值。

我尝试首先使用mysql_fetch_array计算得到$ rows [2]和$ rows [3],但由​​于之前我已经使用过mysql_fetch_assoc,所以这个mysql_fetch_array不起作用。

最后一件事,我mysql_fetch_assoc生成2维数组。因为当我使用print_r($ rows)时,我看到了:

Array ( [0] => Array ( [FirstName] => Mary [LastName] => Smith [NumberOfChildren] => 3 [SchoolTuition] => 2000 ) ) 

而array_push函数仅用于推送1维数组,对吗?

请帮我解决这个问题。非常感谢你。

2 个答案:

答案 0 :(得分:7)

您可以在SQL中进行计算,而无需添加列。

SELECT FirstName, LastName, NumberOfChildren, SchoolTuition, 
    (NumberOfChildren * SchoolTuiton) AS TotalSchoolTuiton 
FROM User WHERE User.Username = '$Username' LIMIT 1

答案 1 :(得分:3)

SELECT FirstName, LastName, NumberOfChildren, SchoolTuition, NumberOfChildren*SchoolTuition AS TotalTuition FROM User WHERE User.Username = '$Username' LIMIT 1;