PHP删除多行并将值返回到另一个表

时间:2018-08-09 19:08:56

标签: php sql pdo

我这里有一个代码,可以从sales_order删除一行数据,然后将qty的值返回到产品表。

<?php
    include('connect.php');
    //get values from href
    $id=$_GET['id'];
    $invoice=$_GET['invoice'];
    $qty=$_GET['qty'];
    $product=$_GET['product'];

    //returns quantity to stock
    $sql = "UPDATE products
            SET stock=stock+?
            WHERE productid=?";
    $q = $db->prepare($sql);
    $q->execute(array($qty,$product));

    //execute query
    $result = $db->prepare("DELETE FROM sales_order WHERE transaction_id= :id");
    $result->bindParam(':id', $id);
    $result->execute();
    header("location:pos.php?invoice=$invoice");
?>

现在,我的目标是要有一个重置按钮,该按钮将从sales_order中删除具有相同发票编号的所有行,然后每行将数量值返回到product表。我似乎找不到办法。谁能帮我吗?

2 个答案:

答案 0 :(得分:0)

您可以使用UPDATE来创建JOIN

UPDATE products AS p
JOIN sales_order AS s on s.productid = p.productid
SET p.stock = p.stock + s.quantity
WHERE s.invoice_number = :invoice

然后,您可以删除带有该发票编号的所有sales_order行。您应该使用事务来确保这一切都是原子完成的。

我在上面对表的架构进行了一些假设,您需要调整为实际的列名。

答案 1 :(得分:-1)

我认为您可以采用数组概念。我认为在删除之前使用select查询检索所有必需的值很简单。然后,您可以将其保存到所需的表中。您可以删除值