在数据库PHP中同时插入两个表

在数据库PHP中同时插入两个表,php,mysql,database,Php,Mysql,Database,我只是想知道是否有可能在数据库中同时插入两个表 $query = sprintf("INSERT INTO table ('tableid')values('somevaleu'),INSET INTO table1 ('table1id')values('somevalue')"); 或者我需要分开做,就像 $query1 = sprintf("INSERT INTO table ('tableid')values('somevaleu')"); $query2 = sprintf("INS

我只是想知道是否有可能在数据库中同时插入两个表

$query = sprintf("INSERT INTO table ('tableid')values('somevaleu'),INSET INTO table1 ('table1id')values('somevalue')");
或者我需要分开做,就像

$query1 = sprintf("INSERT INTO table ('tableid')values('somevaleu')");
$query2 = sprintf("INSET INTO table1 ('table1id')values('somevalue')");

有什么建议吗?

您可以使用
begin
来封装多个SQL语句:

$query = "BEGIN ";
$query .= "INSERT INTO table ('tableid')values('somevalue') INSERT INTO table1 ('table1id')values('somevalue') ";
$query .= "COMMIT";

然后运行
$query

这取决于数据库的查询方式。我使用过的许多第三方数据库抽象库每次执行只允许一条SQL语句。但是,正如您所建议的,MySQL可以接受以分号分隔的多个查询。

如果您使用的是旧的扩展(
MySQL.*
函数),那么您不能在一条语句中发出多个查询

从手册中:

mysql_query()发送一个唯一的查询(不支持多个查询) 已支持)的服务器上的当前活动数据库 与指定的链接标识符关联

如果使用或,则可以在一个查询中执行多个插入


也可以在一个查询中使用扩展插入将多行插入到同一个表中,但不能插入两个不同的表。

为什么要这样做?如果这只是懒惰,请多花30秒,用两个单独的语句。如果您想这样做是因为您需要同时进行两次插入以保持数据库的一致性(例如,同时更新“订单”表和“账单”表),那么您需要查看事务


基本上,一个事务(从BEGIN开始)是一组捆绑在一起的查询,完成后,您可以提交并使其保持不变,或者回滚将其丢弃(例如,如果出现错误,您希望中止该过程)。它们不是在同一时间执行的,但在提交时,它们要么全部成功,要么一个也不会通过。

您使用的是哪个MySQL扩展,旧的
MySQL\u*
函数、mysqli还是PDO?Mysqli和PDO在一个查询中支持多个语句。单独编写查询是最好的方法如果
同时执行
您的意思是同时并行执行两个查询,则不可能。为了可读性,separate看起来更清晰。@thegrede好的,那么不,你必须一次发布一个。您可以在同一个查询中向同一个表中插入多行,但不能在一个查询中插入不同的表。这甚至是我在使用较旧的函数
mysql\uu
?并且请注意,为了使用事务,必须使用InnoDB,而不是更常见的默认引擎MyISAM。