0

我有这种 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 生成二维数组。因为当我使用 print_r($rows) 时,我看到了:

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

而 array_push 函数只用于推送一维数组,对吧?

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

4

2 回答 2

7

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

SELECT FirstName, LastName, NumberOfChildren, SchoolTuition, 
    (NumberOfChildren * SchoolTuiton) AS TotalSchoolTuiton 
FROM User WHERE User.Username = '$Username' LIMIT 1
于 2012-06-14T14:48:44.333 回答
3
SELECT FirstName, LastName, NumberOfChildren, SchoolTuition, NumberOfChildren*SchoolTuition AS TotalTuition FROM User WHERE User.Username = '$Username' LIMIT 1;
于 2012-06-14T14:49:05.467 回答