1

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

我试过

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

但这似乎并没有做到。将表单数据提交到多个数据库表的正确语法是什么?哦,我读过一些类似的线程提到使用事务。这是必要的吗?我的表使用 MyISAM 运行。谢谢!

4

6 回答 6

1

您可以从MySQL 手册中了解更多信息。简而言之,您不能一次插入多个表。这为您提供了三个选择:

  1. 多个INSERT语句
  2. 触发器
  3. 存储过程

这个问题的答案:MySQL Insert into multiple tables?(数据库规范化?) 建议使用事务,这不适用于 MyISAM,但如果您切换到 InnoDB,这是一个很好的仅供参考。

我真的建议您阅读Triggers。他们可以让你的生活更轻松。但如果您不想使用它们,请查看 PHP 的mysqli_multi_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);
于 2012-12-09T00:24:46.480 回答
0

您唯一的解决方案是使用多个单独的查询,最好是在一个事务中。如果您想确保插入来自每个查询的数据,则事务是必要的,在这种情况下您COMMIT需要事务;如果其中一个查询失败,您可以ROLLBACK.

PS 使用 InnoDB。在几乎INSERT所有查询至少占所有查询的 5% 的环境中,它都会更好(遗憾的是,我无法提供源,因为我几个月前读过它并且不再记得在哪里了)。

于 2012-12-09T00:21:40.040 回答
0

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

这么看,如果你写了一个大脚本,比如处理一些数据的例程,你把代码分段越多,越容易调试,如果需要的话,接种有问题的指令,它就会结束从长远来看,可以节省您的时间。

于 2012-12-09T00:21:55.600 回答
0

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

BEGIN
INSERT INTO table1 (col1, col2...ETC) 
  VALUES('value1', 'value2'...ETC)
INSERT INTO table2 (col1, col2...ETC) 
  VALUES('value1', 'value2'...ETC);
COMMIT;
于 2012-12-09T00:22:33.813 回答
0

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

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

于 2012-12-09T00:23:35.543 回答
0

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

$query = "INSERT INTO table1 (col1,col2) VALUES ('$value1','$value2')";
$query = "INSERT INTO table2 (col3,col4) VALUES ('$value3','$value4')";
$result = mysqli_multi_query($dbcon, $query);
于 2021-03-29T01:25:43.690 回答