【问题标题】:inserting in different tables through one mysql query通过一个mysql查询插入不同的表
【发布时间】:2012-01-05 08:56:26
【问题描述】:

我如何通过一个 mysql 查询插入 3 个不同的表,我想编写一个 mysql 查询,将插入 3 个不同的表。我基本上有 html 表单,其中涉及不同的表,所以我将插入收集的数据从一个表格到 3 个不同的表格。如果可以怎么办?如果不是为什么??

一张桌子

  $var1_table1 = $_POST['table1_column1'];
  $var2_table1 = $_POST['table1_column2'];
  $var3_table1 = $_POST['table1_column3'];

第二张桌子

  $var1_table2 = $_POST['table2_column1'];
  $var2_table2 = $_POST['table2_column2'];
  $var3_table2 = $_POST['table2_column3'];

第三张桌子

  $var1_table3 = $_POST['table3_column1'];
  $var2_table3 = $POST['table3_column2'];
  $var3_table3 = $_POST['table3_column3'];

这是我的变量的格式

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    简答

    不,您不能使用单个 SQL 语句插入多个表。

    更长的答案

    你可以通过插入table1然后设置一个trigger来实现 table1 使用 BLACKHOLE table 将数据插入表 2 和表 3 以暂时存储数据。类似于this

    我个人会像瘟疫一样避免这种情况,因为它掩盖了数据从给定应用程序插入数据库的方式和位置。可以在here 找到有关这种做法的更深入的讨论。

    如果我是你,我会在你的 php 应用程序中编写三个单独的 INSERT 语句,并避免尝试创建插入多个表的单个查询。它会为您节省很多痛苦!

    【讨论】:

      【解决方案2】:

      没有一种标准查询允许插入三个表。然而:

      • 为什么需要一个查询?为什么不只是三个查询?
      • 也许使用事务可以解决您的问题?
      • 如果它们几乎代表相同的数据,您确定需要三个不同的表吗?为什么不是一张桌子,如果需要的话可能是三个视图?
      • 如果您真的需要这个,您可以使用存储过程,甚至是触发器

      【讨论】:

      【解决方案3】:

      据我所知,PHP 的 mysql_query() 函数不支持多个查询(插入、选择、更新等),并且当您插入具有不同字段/列的不同表时,您必须运行单独的查询对于每个。 我不认为有办法做你想做的事。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-10
        • 2013-10-28
        相关资源
        最近更新 更多