【问题标题】:How to write Insert and Update query in one single Query in mysql如何在mysql中的一个查询中编写插入和更新查询
【发布时间】:2017-09-24 18:45:09
【问题描述】:

我在下面提到了问题。

我正在使用 php 开发库存系统。

据此,我必须将发票项目添加到表中。

动态生成的文本框,用于收集收到的项目详细信息。

我有 current_stock 表,它包含 Item-name 和 qty 列。

Item-name 是主键字段。

如果已经存在数量我要插入的项目应该用新值更新。

如果不存在,则应作为新行插入。

这必须在循环中完成,因为我使用动态生成的文本框并使用 $item[] 和 $qty[] 数组收集数据。

我正在尝试使用几种方法来解决此问题,无法在 for 循环中执行但尚未成功。

请帮帮我.........

【问题讨论】:

标签: php mysql


【解决方案1】:

你可以试试这个:

INSERT INTO table (id, item_name, qty) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE    
item_name="A"

如果您指定ON DUPLICATE KEY UPDATE,并且插入的行会导致唯一索引或主键中的重复值,MySQL 将对旧行执行更新。

【讨论】:

  • 主要问题无法在 DUPLICATE KET UPDATE 中执行,因为这是我的问题.... if (is_array($qty) && ($item)) { for ($i = 0; $ i
  • 为什么你不能执行重复密钥更新,是否有任何错误
  • 您的 Item-name 是主键字段,因此也使其唯一。它会正常工作。
【解决方案2】:

对于多个查询执行,您必须使用

mysqli_multi_query()

像这样:

mysqli_multi_query("INSERT INTO TABLE SET Field='Value',FieldB='ValueB';
UPDATE TABLE SET Field='Value',FieldB='ValueB' WHERE FIELDID='VALUEID';")

我希望这会奏效。玩得开心。

【讨论】:

  • 是的,但你必须像使用连接字符串一样
  • mysqli_multi_query($con,"INSERT INTO TABLE SET Field='Value',FieldB='ValueB'; UPDATE TABLE SET Field='Value',FieldB='ValueB' WHERE FIELDID='VALUEID' ;")
  • 不,我的要求是如果数据库中已经存在项目,则应更新它,否则应插入。但是查询应该循环执行,因为数组收集的数据......
  • 是查询在循环中执行,因此不可能在单个查询中执行。需要使用 TRANSACTION mysql
猜你喜欢
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多