如何在一个查询中更新两个表?

时间:2013-01-15 21:25:31

标签: php mysql sql database joomla1.5

有一种方法可以在一个查询中更新两个表吗?下面是我的代码示例。如何将这两个更新查询合二为一?提前谢谢!

   <?php
// DATABASE UPDATE
   if (isset($_POST['submit']) or isset($_GET['submit'])){

// 1st QUERY
   $db =& JFactory::getDBO();
   $query_1 = "UPDATE table_1
                  SET name     = '".$_POST["name"]."',
                      surename = '".$_POST["surename"]."'
               WHERE id=1";
   $db->setQuery($query_1);
   $db->query();

// 2nd QUERY
   $db =& JFactory::getDBO();
   $query_2 = "UPDATE table_2
                  SET team_id   = '".$_POST["team_id"]."',
                  SET team_name = '".$_POST["team_name"]."'
                  ";
   $db->setQuery($query_2);
   $db->query(); } ?>

2 个答案:

答案 0 :(得分:5)

MySQL实际上允许在单个查询中对多个表进行更新(尽管通常一次只对您的应用程序执行一次)。

UPDATE table_1, table_2
SET table_1.field = <some value>, table_2.field = <some value>
WHERE table_1.field2 = table_2.field_2 
AND table_1.field_3 = <some other value>

请参阅:http://dev.mysql.com/doc/refman/5.1/en/update.html

正如其他人所说,你应该考虑使用准备好的陈述。

答案 1 :(得分:1)

使用交易,只有InnoDB引擎支持它。

的MySQL&GT;开始交易; 查询正常,0行受影响(0.00秒)

{首先插入此处}

{Second Insert Here}

的MySQL&GT;承诺; 查询正常,0行受影响(0.00秒)

请注意,您必须编写提交,因为如果不这样做,则不会将其刷新到数据库。