2014-10-20 262 views
-6

我正在寫產品庫存腳本。我有一個MySQL表「products_stock」:如何從幾個MySQL字段中減去一定的值

id zid pid amount 
1 123 321 1 
2 124 321 5 
4 124 566 7 
3 125 321 10 

所以,在股票產品ID = 321的總量是16.有人爲了使具有PID = 321和數量= 7 我需要一些PHP函數,這將減去列從第一 ZID開始7,並在表中更新記錄 products_stock,使其lookes後是這樣的:

id zid pid amount 
1 123 321 0 
2 124 321 0 
4 124 566 7 
3 125 321 9 

我試圖做:

function mysql_fields_minus_value ($pid, $amount) { 
    $q_select_stock_data = "SELECT * FROM `products_stock` WHERE `pid` = '".$pid."'"; 
    $r_select_stock_data = mysql_query($q_select_stock_data); 
    if (mysql_num_rows($r_select_stock_data)>0) { // First we check if there is such product in stock 
     // Then we go through all records which have that pid 
        while ($a_select_stock_data=mysql_fetch_array($r_select_stock_data)) { 
       //       echo "<p>".$a_select_stock_data['stock']."</p>"; 
         $product_pid = $a_select_stock_data['sku']; 
         $product_qty_order = 7; // qty of pid in order 
         // than we check if we have enough qtys of product in stock 
         if ($a_select_stock_data['amount'] - $amount)>=0)  { // ok- enough 

從這一點我被困住了。

謝謝你的回答!

+0

你能分享你已經嘗試過什麼,或者你想要的。我們只是爲你寫出來的嗎? – 2014-10-20 21:44:27

+0

請嘗試編寫你的函數,並在這裏發佈代碼,如果你在某個時刻被卡住了,你的問題對於計算器來說太寬了。 – Ejaz 2014-10-20 21:44:35

+0

我必須同意每一個人這是一個窮人問題,你應該給社會更多的幫助你 – MZaragoza 2014-10-20 21:50:25

回答

0

沒有這樣做的功能,你需要迭代所有的行直到你完成。我建議您從數據庫中獲取您想要通過ZID訂購的PID的行。之後,嘗試做這樣的事情:

$i = 0; 
while($qty > 0 && $i < count($rows)) { 
    if ($row[$i]['amount'] >= $qty) { 
     $row[$i]['amount'] -= $qty; 
     $qty = 0; 
    } 
    else { 
     $qty -= $row[$i]['amount']; 
     $row[$i]['amount'] = 0; 
    } 
    ++$i; 
} 

之後,您可以再次將值存儲到數據庫中。

編輯:嘗試使用PDO或mysqli而不是mysql從數據庫中獲取行。

+0

很酷,我會試試看! :) Thanx! – Kamnibula 2014-10-20 22:06:20

+0

這是很好的答案!這真的很有用! – Kamnibula 2014-10-21 05:12:57

0

你離實現你的目標並不遠。您需要做的是將您的MySQL語法從SELECT聲明更改爲UPDATE聲明。

這條線:

$q_select_stock_data = "SELECT * FROM `products_stock` WHERE `pid` = '".$pid."'"; 

應該是:現在

$q_select_stock_data = "UPDATE `products_stock` SET `amount` = '".$qty."' 
WHERE `pid` = '".$pid."'"; 

,你將需要調用每個pid您想更新此功能。我建議是這樣的:(記住是my_sql命令正在貶值,而我們也將需要提供與數據庫連接對象的功能

function delete_record($db, $qty, $pid){ 
mysqli_query($db, "UPDATE `products_stock` SET `amount` = '".$qty."' 
WHERE `pid` = '".$pid."'"); 
} 
+0

我無法刪除記錄,我在這裏寫下了一個簡單的例子。在現實生活中,有更多的領域是庫存產品運動統計所需要的。 – Kamnibula 2014-10-20 22:17:05

+0

好吧,我已將查詢調整爲「更新」記錄! – 2014-10-20 22:31:32