从MySQL Fetch Assoc和Fetch Array对JSON进行编码


Encode JSON From MySQL Fetch Assoc & Fetch Array

我有这个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);

现在,问题是我想计算学校总学费(儿童人数 * 学费),必须在 json_encode() 函数之前完成。 而且我的客户不想在他们的数据库上添加额外的列。

所以我必须使用 PHP 计算这个学校总学费,并将其作为json_encode之前数组的最新值放回$rows数组中。

我首先尝试使用 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函数仅用于推送一维数组,对吧?

请给我这个问题的解决方案。非常感谢。

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

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