2011-09-19 168 views
0

如何将数据插入到两个或多个表中?PHP/MySQL插入问题

目前我正在使用这个技巧。 (让我们假设语法是正确的)

$Sql1 = "insert into user"; 
$Sql2 = "insert into files"; 
$Sql3 = "insert into messages"; 

query $Sql1 
query $$ql2 
query $Sql3 

所以我使用这个,我需要优化。

另外,我想我需要使用外键?但我不知道如何在phpmyadmin上做到这一点。

最后:

这就是我想要的。

要在“user”表上插入数据,然后自动将表“messages”和“files” 也有一个与用户相同的ID。这就是为什么我使用3个查询在我的码。

请帮帮我。

感谢ADVANCE!

myb

+3

为什么你需要优化呢?这三个查询是否构成* actual *性能问题? –

回答

3

使用多个查询完全没问题。

但是,您应该将3个查询包装为一个transaction。也就是说,如果一个对于的查询失败,某种原因,所有以前的查询(如果有)的影响都可以回滚,以便数据库保持一致状态。

注意:事务对MySQL的MyISAM表是不可能的。此外,您必须使用PHP的Mysqli(或PDO)才能使用事务。 (我假设你使用一些高级的数据库抽象层。)

至于你就外键问题:据我所知,这都没有区别,当你使用我的数据库中的表的MyISAM引擎(我认为),因为MyISAM甚至不支持显式的外键建模。然而,像InnoDB这样的其他表引擎可以使用外键来检查某些限制,比如“一条消息必须总是与现有的人相关联”。

下面是关于外键的一些很好的例子:http://www.postgresql.org/files/documentation/books/aw_pgsql/node131.html