Php mysql - 在一个查询中插入多个表

时间:2016-01-11 15:06:12

标签: php mysql

我在添加产品时有以下表格

  1. product_table [包含基本详细信息,如pid,名称,费率,身高,宽度]
  2. product_sellers [包含卖家详细信息的参数]
  3. product_offers [包含产品优惠]
  4. 等5个表。共有8个表,所有表都通过pid作为外键链接。

    我知道以下三种方法:

    • 在所有表格上逐一使用Insert语句

      $sql = "table 1 insert"; $sq2 = "table 2 insert";
      
    • 制作所有表格的功能并逐个调用。
    • 使用BEGIN和COMMIT语句。

      BEGIN
        $sql = "table 1 insert";
        $sq2 = "table 2 insert";
      COMMIT
      

    有没有更好的方法,超出3以上哪种方法更快更熟练?

1 个答案:

答案 0 :(得分:1)

使用

的优势
    BEGIN
      $sql = "table 1 insert";
      $sq2 = "table 2 insert";
    COMMIT

是您的更改可以在服务器端一起批处理。

因为您要对多个表进行更改,所以将所有更改放入事务(而不是在自动提交中运行)将允许您退出所有更改,如果其中一个更改失败。它还允许对数据库的更改以原子方式显示给其他客户端,而不是在每个查询执行时使更改变为可见。

在这种情况下,它不是一个因素,但是当同一个表的多个修改被批处理时,这也可以更有效地更新索引。


如何在PHP代码中实现它取决于您。根据应用程序的需要,处理一切的一个函数可能没问题。但是将数据库中的单个插入调用拆分为可以重用的不同函数(特别是如果产品的各个部分在创建后可能会发生变化)也可能更好,并且有一个函数可以处理"插入产品&# 34;通过启动事务,调用各个函数,处理错误,并在适当时提交或回滚事务。