mysql_insert_id能混淆一下吗?

时间:2012-03-15 22:51:31

标签: php database

我的数据库'file'和'message'中有两个表。如果用户提交文件,我首先在我的数据库中的文件表,位置等中提交文件名。之后,我在inmedietley中设置以下变量:

 $file_id = mysql_insert_id();

这将获得文件的指定id,使用该变量我可以将其插入到消息表中,例如message_file_id。这样我就可以获得一个只有id的消息文件。

一切正常,但我的问题是。如果我有2个用户同时提交带有文件的消息(这很难,甚至不可能),用户A是否有可能获得用户B文件ID?

有一个变量可能会影响到这一点,就像用户的时间比另一个更快或更慢。

1 个答案:

答案 0 :(得分:2)

不,只要两个交易都在同一个连接中执行,用户A就没有机会获得用户B的文件ID。 MySQL非常智能,可以为不同的连接提供不同的自动增量ID,即使它们同时插入同一个表中也是如此。您甚至不必在事务中包装两个插入。

所以只要你使用mysql_insert_id()就没有任何问题 - 它总会像你期望的那样工作,也不会混淆ID,你可以完全安全地使用返回值mysql_insert_id作为与刚刚插入的记录相关的记录中的外键。

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