将字段移动到另一个表并使用该ID更新第三个表中的行

时间:2019-01-22 07:55:27

标签: php mysql

我有三个表,分别称为“ itemorders”,“ mycart”和“ products”。我目前正在将mycart中的项目移动到multiquery中的itemorders表中。

$query = "INSERT into itemorders 
  (itemID,itemName,itemSize,itemColour,itemPrice,quantity,orderID) 
   SELECT itemID,itemName,itemSize,itemColour,itemPrice,quantity, 
 LAST_INSERT_ID() FROM mycart WHERE email='".$email."'  ";

如何使用查询中的itemID,itemColour和数量,并使用它们来更新产品表中的数量字段?

1 个答案:

答案 0 :(得分:0)

如果您的UPDATE INNER JOIN表中还有一个itemorders列,则可以使用AUTO_INCREMENThttps://dev.mysql.com/doc/refman/5.5/en/update.html)。

类似的东西:

UPDATE products p
INNER JOIN itemorders i ON p.itemID = i.itemID AND p.itemColour = i.itemColour
SET p.quantity = p.quantity - i.quantity
WHERE i.ID = LAST_INSERT_ID()

我还没有对此进行测试,因此确保读者处理业务不变性以避免存入负库存数是一种练习。

  

P.S。另外,还要注意SQL注入攻击(对不良的Bobby Tables插入电子邮件的方式可能会使生活更艰难。https://xkcd.com/327/),我建议您研究PDO http://php.net/manual/en/pdostatement.bindvalue.php