[英]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_P
與S_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']
的數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.