PHP / MySQL插入问题

时间:2011-09-19 10:44:44

标签: php mysql database database-optimization

如何将数据插入两个或多个表?

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

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

query $Sql1
query $$ql2
query $Sql3

所以我正在使用它,我需要进行优化。

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

最后:

这就是我想要的。

在“用户”表中插入数据,然后自动将表“消息”和“文件” 还会有一个与用户相同的ID。这就是我在代码中使用3个查询的原因。

请帮帮我。

先谢谢!

MYB

3 个答案:

答案 0 :(得分:3)

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

但是,您应该将3个查询打包成一个 transaction 。也就是说,如果一个查询因某种原因而失败,则可以回滚所有先前查询(如果有)的效果,以便数据库保持一致状态。 / p>

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

关于外键的问题:据我所知,当你将MyISAM引擎用于数据库中的表时(我认为)没有区别,因为MyISAM甚至不支持外键的显式建模。但是,像InnoDB这样的其他表引擎可以使用外键来检查某些约束,例如“消息必须始终与现有人员关联”。

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

答案 1 :(得分:1)

答案 2 :(得分:1)

使用mysql你可以使用LAST_INSERT_ID()或php mysql_insert_id()函数。查看此手册条目:

http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html

http://php.net/manual/en/function.mysql-insert-id.php