簡體   English   中英

如何使用數組存儲從PHP中的SQL查詢獲取的值

[英]How to use arrays to store values fetch from sql query in php

我在這里要做的是能夠將sql查詢中的值分配給數組。 然后計算總數。

<?php

include('conn.php');

$qreports=query_database("SELECT S_PRICE, PID, QTY_PUR, ITEM_ID, CUSID, CNUM, Cust_Name, TDATE  FROM prod_table, customer_credit, sales_trans_items WHERE prod_table.PID=sales_trans_items.ITEM_ID AND sales_trans_items.CNUM=customer_credit.CUSID AND sales_trans_items.TDATE='2011-02-06 09:14:09'","onstor",$link);

$grandtotal=0;

$customer="";
while($qrep=mysql_fetch_assoc($qreports)){


    $pid=$qrep['PID'];

    foreach ($pid as $k => $v) {
    $sids=$v;
    $qtypur=$qrep['QTY_PUR'][$k];
    $sprice=$qrep['S_PRICE'][$k];
    $customer=$qrep['Cust_Name'][$k];
    $tdate=$qrep['TDATE'][$k];


    $stot=$qtypur * $sprice;

    $grandtotal =$grandtotal + $stot;
}

}

echo "Customer: ". $customer."<br/>";
echo "Profit: ". $grandtotal;

?>

在將查詢放入代碼之前,我在phpmyadmin上嘗試了該查詢,並輸出以下內容: 在此處輸入圖片說明

我認為您誤解了mysql_fetch_assoc工作原理:每個調用都從結果集中返回一行 $grep是具有結構columnname => value數組

這也意味着$qrep['PID']不能是數組,並且您的foreach循環不起作用。 在每個循環中, $qrep['PID']包含您在屏幕快照的PID列中看到的值之一。

我建議您添加print_r($qreq); while循環中,這樣您就可以更熟悉數組的結構。

由於每個$qrep本身都是一個數組,因此創建一個結果數組只是將其中的每個添加到一個新數組中:

$result = array();
while(($qrep=mysql_fetch_assoc($qreports))) {
    $result[] = $qrep;
}

現在您正在執行更多計算,但不確定最終要獲得什么,但似乎您正在將每個QTY_PS_PRICE

$total = 0;
foreach($result as $report) {
    $total += $report['QTY_P'] * $report['S_PRICE'];
}

(不過,您也可以在while循環中對此進行計算)

假設您要獲取總和以及每個客戶的總和:

$total = 0;
$total_per_customer = array();
foreach($result as $report) {
    $customer = $report['Cust_Name'];
    if(!array_key_exists($customer, $total_per_customer)) {
        $total_per_customer[$customer] = 0;
    }
    $price = $report['QTY_P'] * $report['S_PRICE'];
    $total_per_customer[$customer] += $price;
    $total += $price;
}

最后, $total_per_customer是一個以客戶名稱為鍵,價格總和為值的數組。 $total將包含所有價格的總和。

您的問題尚不清楚,但我認為答案與以下建議的參考文獻相距甚遠:

  • 當您遍歷行時,請使用類似$array[] = $qrep['columnName']的數組。
  • 然后,檢查PHP的array_sum()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM