选择时自动更新数据

时间:2014-11-17 09:30:48

标签: php mysql

我有这段代码来获取数据:

$resultsTicket = $mysqli->query("SELECT * FROM orders_history 
     WHERE customer_name = '$member_name' 
     AND order_method = 'EStock'
     ORDER BY id ASC");

结果如下:

orders_history

----------------------------
  unique_random    quantity       
----------------------------
  12C3EDsE34e        5      
  sad234sadsa        7      

从上面的结果中,在视图页面中,用户将选择他们想要选择的数量。例如,在第一行:他们从5个数量中选择3。提交后,数据将发布到另一个表中:

claim_history

----------------------------
  unique_random    claim       
----------------------------
  12C3EDsE34e        3      
  sad234sadsa        2

我现在的问题是如何自动更新第一个表(orders_history)中的数量。

orders_history

----------------------------
  unique_random    quantity       
----------------------------
  12C3EDsE34e        2      
  sad234sadsa        5      

我已经尝试过这样但它似乎不起作用:

                            <?php
                            $customer_email=$member_email;          

                            $resultsTicket = $mysqli->query("SELECT * FROM orders_history 
                                                             WHERE customer_name = '$member_name' 
                                                             AND order_method = 'EStock'
                                                             ORDER BY id ASC");

                                             $mysqli->query ("UPDATE orders_history
                                                             LEFT JOIN estockClaims on estockClaims.transaction_id = orders_history.transaction_id
                                                             SET orders_history.quantity = orders_history.quantity - estockClaims.quantity;
                                                             ");
                                if ($resultsTicket > 0) {
                                    $i = 0; 
                                    $random = substr(str_shuffle(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ),0, 1) . substr(str_shuffle(aBcEeFgHiJkLmNoPqRstUvWxYz0123456789),0, 6);
                                    while($obj = $resultsTicket->fetch_object()) {

3 个答案:

答案 0 :(得分:1)

在claim_history中成功插入后,您可以更新sql,例如:

$mysqli->query("update orders_history set quantity = quantity - selectedQuantity where unique_random=your selected value");

//因为你有两个或更多的项目所以把它写在一个循环中。

如果你想实现这一点:更好地编写一些onchage事件,从每个select的视图触发它并相应地更新表。

但我认为你不应该在选择更新时更新表,在插入第二个表后更新它,否则你必须处理更多的问题。

答案 1 :(得分:1)

您可以在mysql中使用on update触发器:http://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html

  • 通过转义变量来避免sql注入。

答案 2 :(得分:1)

除了将数据发布到claim_history表之外,您还可以运行更新查询:

$mysqli->query("UPDATE orders_history SET quantity = ".$newQuantity." WHERE unique_random = " . $uniqueRandom);