Php 如何在MySQL中向多个表插入数据?

Php 如何在MySQL中向多个表插入数据?,php,mysql,forms,Php,Mysql,Forms,我刚刚开始学习在MySQL中连接表。现在,我有一个小项目,我只想让访问者通过表单插入数据。然后,数据显示在一个包含四行的HTML表中,将数据库中的两个表连接在一起。“问题”是数据应该提交到数据库中的这两个不同的表中 我试过了 $query = "INSERT INTO table1, table2 (col1, col2, col3, col4) VALUES ('value1', 'value2', 'value3', 'value4')"; 但这似乎不行。向多个数据库表提交表单数据的正确语

我刚刚开始学习在MySQL中连接表。现在,我有一个小项目,我只想让访问者通过表单插入数据。然后,数据显示在一个包含四行的HTML表中,将数据库中的两个表连接在一起。“问题”是数据应该提交到数据库中的这两个不同的表中

我试过了

$query = "INSERT INTO table1, table2 (col1, col2, col3, col4) VALUES ('value1', 'value2', 'value3', 'value4')";

但这似乎不行。向多个数据库表提交表单数据的正确语法是什么?哦,我读过一些类似的帖子,提到使用事务。这有必要吗?我的桌子是用MyISAM运行的。谢谢

您唯一的解决方案是使用几个单独的查询,最好在一个事务中使用。如果要确保插入每个查询中的数据,则必须执行事务,在这种情况下,您需要提交事务;如果其中一个查询失败,您可以
回滚


另外,请使用InnoDB。在几乎所有的环境中,
INSERT
查询至少占所有查询的5%(遗憾的是,我无法提供源代码,因为我几个月前读过它,现在已经不记得在哪里了)。

您唯一的解决方案是使用几个单独的查询,最好是在一个事务中。如果要确保插入每个查询中的数据,则必须执行事务,在这种情况下,您需要提交事务;如果其中一个查询失败,您可以
回滚


另外,请使用InnoDB。在几乎所有的环境中,
INSERT
查询至少占所有查询的5%(遗憾的是,我无法提供源代码,因为我几个月前读过它,不再记得它在哪里)。

我可能错了,但您不能同时插入多个表。您将其拆分为两个或多个命令,每个命令都处理特定的插入,这有什么大不了的,一行额外的代码(这使一切都更清楚)太麻烦了,无法键入


从这个角度看,如果你写了一个大的脚本,比如一个处理一些数据的例程,你越是分段代码,调试就越容易,如果有必要,插入有问题的指令,从长远来看,它将为你节省时间。

我可能错了,但不能同时插入多个表。您将其拆分为两个或多个命令,每个命令都处理特定的插入,这有什么大不了的,一行额外的代码(这使一切都更清楚)太麻烦了,无法键入


从这个角度来看,如果您编写了一个大型脚本,例如一个处理某些数据的例程,那么代码越分段,调试就越容易,并且如果需要,插入有问题的指令,最终将节省您的时间。

您可以通过以下方式使用MySQL事务来执行此操作: 尝试:


您可以通过以下方式使用MySQL事务执行此操作: 尝试:


有了MyISM,您将需要为要插入的每个表执行查询,我不相信在一个查询中可以添加到多个表中


在您的情况下,您不能使用事务,因为您的引擎不支持它们。

使用MyISM,您将需要对要插入的每个表执行查询,我不相信在一个查询中可以添加到多个表中


在您的情况下,您不能使用事务,因为您的引擎不支持这些事务。

您可以从中阅读有关它的更多信息。简而言之,不能同时插入多个表。这给您留下了三个选项:

  • 多个
    INSERT
    语句
  • 这个问题的答案是:建议使用事务,这对MyISAM不起作用,但如果您切换到InnoDB,这是一个很好的参考

    我真的建议你仔细阅读。它们可以让你的生活轻松很多。但如果您不想使用它们,请查看PHP,它将允许您同时执行两个不同的查询,例如:

    $query = "INSERT INTO table1 (col1,col2) VALUES ('$value1','$value2');";
    $query = "INSERT INTO table2 (col3,col4) VALUES ('$value3','$value4');";
    $result = mysqli_multi_query($dbcon, $query);
    

    你可以从网站上了解更多。简而言之,不能同时插入多个表。这给您留下了三个选项:

  • 多个
    INSERT
    语句
  • 这个问题的答案是:建议使用事务,这对MyISAM不起作用,但如果您切换到InnoDB,这是一个很好的参考

    我真的建议你仔细阅读。它们可以让你的生活轻松很多。但如果您不想使用它们,请查看PHP,它将允许您同时执行两个不同的查询,例如:

    $query = "INSERT INTO table1 (col1,col2) VALUES ('$value1','$value2');";
    $query = "INSERT INTO table2 (col3,col4) VALUES ('$value3','$value4');";
    $result = mysqli_multi_query($dbcon, $query);
    

    我有这个问题之前,你可以使用多个查询功能

    $query = "INSERT INTO table1 (col1,col2) VALUES ('$value1','$value2');";
    $query = "INSERT INTO table2 (col3,col4) VALUES ('$value3','$value4');";
    $result = mysqli_multi_query($dbcon, $query);
    

    我有这个问题之前,你可以使用多个查询功能

    $query = "INSERT INTO table1 (col1,col2) VALUES ('$value1','$value2');";
    $query = "INSERT INTO table2 (col3,col4) VALUES ('$value3','$value4');";
    $result = mysqli_multi_query($dbcon, $query);
    

    他说他使用的MyISAM不支持事务。MyISAM确实“支持”事务,因为事务命令会被解析,然后被忽略。myisam使用事务语义没有错,它们只是不做任何事情,而且您肯定不能回滚。无论哪种方式,OP都必须使用多个插入。他说他使用的MyISAM不支持事务。MyISAM确实“支持”事务,因为事务命令会被解析,然后被忽略。myisam使用事务语义没有错,它们只是不做任何事情,而且您肯定不能回滚。无论哪种方式,OP都必须使用多个插入。看看为什么您甚至希望两个表中的数据完全相同。这听起来像是糟糕的数据库设计。不是完全相同的数据。Col1和Col2是我的第一个表中的列,Col3和Col4是我的第二个表中的列。看看为什么你想要两个表中完全相同的数据。这听起来像是糟糕的数据库设计。不是完全相同的数据。Col1和Col2列在我的第一个表中,Col3和Col4列在我的第二个表中。感谢您的全面回答。我有一些阅读要做!谢谢你全面的回答。我有一些阅读要做!