台灣最大程式設計社群網站
線上人數
1209
 
會員總數:246135
討論主題:189716
歡迎您免費加入會員
討論區列表 >> PHP >> 如何將MySQL資料庫中同欄位資料表在php上計算
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何將MySQL資料庫中同欄位資料表在php上計算
價值 : 20 QP  點閱數:6320 回應數:8
樓主

Yu
門外漢
0 4
88 17
發送站內信

Q1.假設我要將SQL某資料表欄位(price)的每筆(price)資料
在php程式碼中,抓出來做累加,那句運算的語法該如何寫?

Q2.假設我這次要抓兩個欄位資料(id)與(price),我要把(id)相同的資料
(price)進行累加,那麼又該如何寫運算式?

Q3.如果我要把SQL抓出來的資料(price)轉換成PHP的陣列,想說用陣列運算累加(price)語法該如何寫呢?

本篇文章發表於2012-10-30 21:23
1樓
回應

ailio
檢舉此回應
A1.
$sum += $price

A2.
$sum['id'] += $price

A3.
foreach($array as $a){
$sum += $a['price']
}


您一定覺得我在回答啥鬼

我看到您問的東西 也是一樣的疑問...囧

白話文來說的話
A1 就是在跑資料庫讀取的迴圈同時 進行累加

A2 透過陣列 把同ID的累加在一起

A3 先把所有資料全轉成陣列 然後用Foreach跑所有陣列 去累加特定欄位
本篇文章回覆於2012-11-01 16:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
正規來說~~~我會希望你直接下MYSQL統計就行了。
如果依然要一個一個取出的值。那就是直接在回圈內加總了。
本篇文章回覆於2012-11-01 18:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

Yu
檢舉此回應
大概意思是懂,但是整體邏輯和撰寫語法上還是有點小卡到,而且有很多語法上的問題...
我把狀況描述清楚一點好了,我是要用Q2的方式撰寫
假如我需要用到資料庫的orders_products資料表中(products_id欄位、及final_price欄位)
以及products資料表中(products_id、products_finalp欄位)
products_id的欄位資料假如有(1 1 1 2 2 3 5 7 7 7 8 )這幾筆資料
我要在執行這支php程式時,程式會幫我從products_id欄位中,把products_id相同的每筆資料進行final_price欄位累加
例如三筆1 1 1的final_price會累加起來,而products_id 5只有一筆就不累加,但也會記錄
存進products資料表中對應products_id的products_finalp欄位中

邏輯上應該是先抓出資料庫欄位,然後For迴圈products_id累加final_price 再把最終sum值inster進product_finalp欄位中
程式撰寫方面應該是先


接著我就卡住了..
我For迴圈計算,需要先把資料庫欄位變成變數嗎?
迴圈內容我是這樣打..


當然...結果是沒有回應

我想是不是要先把$order轉換成陣列再計算於是用foreach測試


結果也沒回傳出任何值,是我讀取sql方式錯了嗎?
還有什麼方式可以將SQL抓出來的資料變成陣列
又想到直接用For迴圈,那程式要怎麼知道它是抓哪一筆product_id的final_price進行計算
並存進資料庫中..
越想就越混亂,問題也越大了

回浩瀚星空大 您所說的MYSQL統計是指...?
我是程式初學者,現在也是變看書邊學習狀態,手邊的PHP程式書介紹SQL部分都是新增、查詢、刪除語法居多
SQL統計部份我就不瞭解了。
可以直接在PHP上抓資料庫的資料出來計算嗎
本篇文章回覆於2012-11-02 00:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

Yu
檢舉此回應
剛剛發現程式碼中漏打了很多$跟單引號
實際程式上是有打的,只是在這程式碼沒顏色顯示,漏打了..
本篇文章回覆於2012-11-02 00:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
不錯的參考

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
看樣子你對PHP中的MYSQL函數應用不熟。

mysql_query()只是連結資料表而已,並非是讀取資料。
如果你直接ECHO出來,因該只是一個資料集的編號而已。

mysql_fetch_array()才是一筆一筆的將資料取出並轉為陣列。
還有其它相關的MYSQL函數。這請你去

http://php.net/manual/en/book.mysql.php

官方的手冊查看相關的用法學習一下。
本篇文章回覆於2012-11-02 10:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Yu
檢舉此回應
謝謝浩瀚星空大
mysql_fetch_array()我有用過
但我原先一直以為這是在while迴圈才需要用mysql_fetch_array()
原來把SQL資料轉成陣列這麼簡單..

後來想一想經過測試,把程式碼改成這樣
讓SQL資料變成二維陣列,用for迴圈計算
可是問題來了,這樣的for迴圈內容計算只能將final_price欄位的值全部累加
沒辦法做到前面所說把product_id相同的final_price累加起來
然後把這些值記錄到products資料表中對應products_id的products_finalp欄位中
後來想到那就For迴圈讓每次迴圈抓到的final_price值UPDATE到products_finalp中
就+了第12行的UPDATE語法進去,結果資料庫那並沒有記錄
問題出在哪呢,是那段敘述句語法有問題?

本篇文章回覆於2012-11-02 17:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
最有價值解答

Siva
檢舉此回應
您需要學習的是MYSQL的GROUP BY 的部分..
也許只要更改一行就能達成你要的結果
select sum(products_price) from orders_products
select sum(products_price) from orders_products group by products_id

http://www.5iphp.com/mysql-group_by

關鍵字: mysql group by
本篇文章回覆於2012-11-12 12:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Yu
檢舉此回應
因為要把計算出的值存到資料庫,所以就想到用PHP語法來寫
我已經弄出來了,還是謝謝各位!
本篇文章回覆於2012-11-13 14:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.