2014-03-12 113 views
0

我有從一種形式的文本框我的交值例如:選擇在MySQL與匹配ID陣列的陣列,並計算

<input type="number" name="m_id[<?php echo $row['m_id']; ?>]" value="<?php echo $row['m_id']; ?>"/> 

<input type="number" name="qty[<?php echo $row['m_id']; ?>]" value=""/> 
在我的PHP代碼

$id = $_POST['m_id']; 
$qty = $_POST['qty']; 

讓我們假設後陣列有值2,4,5號與數量輸入1,1,1

id qty 
2  1 
4  1 
5  1 

如何選擇一個命名錶sup_mon喜歡:

sup_mon table: 
     m_id balance 
     1   2 
     2   5 
     3   20 
     4   15 
     5   8 

the select will be: 
     m_id balance 
     2   5 
     4   15 
     5   8 

如何從相應的m_id中的qty數組輸入1,1,1中減去餘額。

+2

我最初的猜測是查詢。 –

+0

究竟這個數量的1是如何影響你的數據的?您的餘額在兩個表格之間沒有變化。你所做的只是消除一些不存在於ID中的行。 –

+0

你需要得到減法的結果嗎?否則你可以做一個'UPDATE'查詢 – MamaWalter

回答

0

您需要爲每個id更新查詢的循環。你沒有提到數據庫連接風格,所以我將使用PDO。注意:此代碼假定每個ID都有一個數字。您還需要更新更新語句以匹配您的數據庫名稱等...

for ($i=0; $i<count($_POST['id']); $i++) { 

    $sql = "UPDATE databaseName.sup_mon SET balance = balance - :qty WHERE m_id = :id"; 

    //if you're debugging, you may want to uncomment the next line: 
    //echo $sql; 

    //here $dbh is a PDO object - database handler 
    $stmt = $dbh->prepare($sql); 

    //binds the current id value from the post array 
    $stmt->bindParam(':id', $_POST['id'][$i], PDO::PARAM_INT); 
    $stmt->bindParam(':qty', $_POST['qty'][$i], PDO::PARAM_INT); 

    $stmt->execute(); 
} 
+0

你爲什麼只綁定一個參數? – MamaWalter

+0

良好的通話!這將打開它的SQL注入,現在不是嗎?將編輯答案... – larsAnders