首页 > 解决方案 > 如何增加或减少数量然后数据库数量也会改变?

问题描述

如果我在库存字段中输入一个数字,然后单击添加库存,数量应该增加和更新,与减法相同。

表格和表格

添加项目和初始数量的代码

<label for="item_code">Item Code</label>

    <select name="code" id="code">
        <?php 
            $query = "SELECT * FROM item_code";
            $select_item_name = mysqli_query($connection, $query);
            while ($row = mysqli_fetch_assoc($select_item_name)) {
            $item_id = $row["item_id"];
            $item_code = $row["item_code"];

            echo "<option value='{$item_id}'>$item_code</option>";
            }
        ?>
        
    </select>
    <br>


<label for="item_name">Item Name</label>
<input type="text" name="item_name"><br>

<label for="item_name">Add Initial Quantity</label>
<input type="number" name="quantity"><br>

<input type="submit" name="add_item" value="Add Item">

显示表格的代码

代码图片

我的删除功能正在运行

    if(isset($_GET['delete'])) {
  $the_item_management_id = $_GET['delete'];
  $query = "DELETE FROM item_management WHERE item_management_id = {$the_item_management_id}";
  $delete_query = mysqli_query($connection, $query);
  header("Location:inventory_management.php");

}

我正在尝试添加库存

    if(isset($_GET['add_stock'])) {
  $the_item_management_id = $_GET['add_stock'];
  $stock = $_POST["stock"];

  $query = "SELECT item_quantity + $stock AS item_quantity FROM item_management";
  $result = mysqli_query($connection, $query);

}

这是我的数据库表

数据库

标签: phpmysqli

解决方案


更改以下代码

$query = "SELECT item_quantity + $stock AS item_quantity FROM item_management";
$result = mysqli_query($connection, $query);

$stmt = $connection->prepare("UPDATE item_management SET item_quantity = @item_quantity := item_quantity + ? LIMIT 1");
$stmt->bind_param('s', $stock);
$stmt->execute();
$query = "SELECT @item_quantity AS item_quantity";
$result = mysqli_query($connection, $query);

但是您还必须为要增加的项目数量传递一个 ID。当您有多个产品时。

这种功能的最佳选择是创建一个存储过程并在您的 PHP 代码中调用它。

CREATE PROCEDURE `return_item_quantity` ()
BEGIN
   UPDATE tbl_user SET
    item_quantity = @item_quantity := item_quantity+'$stock'
   WHERE id='$id' LIMIT 1;
   SELECT @item_quantity AS item_quantity;
END //

推荐阅读