两个表上的mysql更新查询

时间:2012-03-08 02:06:26

标签: php mysql ajax mysqli

我正在尝试使用如下所示的查询在一个查询中更新两个表:

$query = "UPDATE tblproducts, tblsideimages 
          SET tblproducts.prodCode='oj', tblsideimages.prodCode='oj' 
          WHERE tblproducts.prodCode='aj' 
              AND tblsideimages.prodCode='aj'";

如果tblsideimages中有内容,例如那个,但是如果tblsideimages没有内容则无效。

问题在于我必须相应地进行调整,因为并不总是在tblsideimages中会有内容。有时,用户可以添加仅在tblproducts中插入的数据。我如何才能做到这一点,如果tblsideimages中没有内容,它仍然适用于tblproducts,如果tblsideimages和tblproducts都有内容,两者都会更新。谢谢!

2 个答案:

答案 0 :(得分:2)

没有办法(和真正的理由)在一个查询中完成所有工作。所以只需将其拆分为:

UPDATE tblproducts SET prodCode='oj' WHERE prodCode='aj' 

UPDATE tblsideimages SET prodCode='oj' WHERE prodCode='aj'

较少的查询并不意味着“性能更高”,因此请不要按照这个想法将所有内容都放入一个查询中。

答案 1 :(得分:0)

您可以使用存储过程执行此操作 - 在事务中使用update语句编写存储过程。

使用回滚,您可以确保将它们视为一个工作单元,即它们都被执行或者都不执行,以保持数据的一致性。

或执行多个查询,例如

     $query="UPDATE tblproducts
             SET tblproducts.prodCode='oj'
             WHERE tblproducts.prodCode='aj';
             UPDATE tblsideimages 
             SET tblsideimages.prodCode='oj'
             WHERE tblsideimages.prodCode='aj'";