【问题标题】:running sql query to insert into a table and update another table运行 sql 查询以插入表并更新另一个表
【发布时间】:2012-08-06 16:08:16
【问题描述】:

如何在 php 中运行 sql 查询以插入表并更新另一个表。例如,当输入一个库存并提交时,sql查询应该运行一个insert语句来更新批处理文件,并运行update语句来更新product表中的totalquantityinstock(新数量+现有数量)。希望我的解释能被理解。

表格:产品(ProdId、名称、Cat、TtlQtyInStock)和 ProdInventory(InvID、ProdID、数量)

在 php 表单中输入新的 ProdInventory 记录后,查询应插入 ProdInventory 并更新 Product 表中的 TtlQtyInStock 列)。我想要的是当前产品的库存 cld 为 20,所以当新的库存添加 10 个相同的产品,总和为 20 + 10。

我目前的查询是:

$query = "INSERT INTO `ProdInventory (`ProdId`, `Quantity`) VALUES ('$ProdID', '$Quantity')";
"UPDATE product
SET QuantityInStock = (QuantityInStock + $Quantity)
WHERE ProductCode = $ProductCode";

我确实浏览了一些网站,但没有找到适合我设计的东西。如果有人帮忙... :)

TIA。

【问题讨论】:

  • 嗯.. 就这样做?你的问题到底是什么,你能澄清一下吗?
  • 你真的应该阅读一些关于 SQL 的教程和文档。任何人都无法回答这个问题,因为您没有提供相关的表结构,也没有尝试对查询进行编码。
  • 插入表 1(字段 1)值(值 1); UPDATE TABLE2 SET FIELD1=FIELD1+VALUE1 WHERE FIELD2=VALUE2;
  • 那么问题出在哪里?我能看到的唯一可能导致问题的是 ProductCode 在一个表中使用,而 ProdId 在另一个表中。我建议对两者使用相同的参考。

标签: php mysql


【解决方案1】:

虽然不是最好的解决方案,但可能的解决方案是创建一个插入触发器。所以基本上它所做的就是每次在表中进行插入时,触发器都会触发并更新股票的值(它可能在不同的表上

【讨论】:

  • 当然,触发器是要走的路——但 IIRC 触发器中的任何 DML必须在不同的表上。
【解决方案2】:

您需要运行两个更新语句,而不是插入和更新。

这可以使用存储过程或 multi_query (MYSQLi) 在一次 mysql 之旅中实现。

这是一个参考链接:

http://php.net/manual/en/mysqli.multi-query.php

http://php.net/manual/en/mysqli.quickstart.stored-procedures.php

【讨论】:

    【解决方案3】:

    我建议你创建一个视图。在该视图中,您可以创建一个列,您可以在其中计算所需的任何内容。 这样,您的数据库结构将非常干净,并且错误的机会将减少恕我直言

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2013-08-16
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      相关资源
      最近更新 更多