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() 関数の前に実行する必要があります。私のクライアントは、データベースに余分な列を1つ追加したくありません。

したがって、PHP を使用してこの TOTAL School Tuition を計算し、json_encode の前の配列の最新の値として $rows 配列に戻す必要があります。

最初に $rows[2] と $rows[3] を取得するために mysql_fetch_array を使用して計算しようとしましたが、以前に 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 次元配列をプッシュするためにのみ使用されますが、そうですか?

この問題の解決策を教えてください。どうもありがとうございます。

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 に答える