我的数据库'file'和'message'中有两个表。如果用户提交文件,我首先在我的数据库中的文件表,位置等中提交文件名。之后,我在inmedietley中设置以下变量:
$file_id = mysql_insert_id();
这将获得文件的指定id,使用该变量我可以将其插入到消息表中,例如message_file_id。这样我就可以获得一个只有id的消息文件。
一切正常,但我的问题是。如果我有2个用户同时提交带有文件的消息(这很难,甚至不可能),用户A是否有可能获得用户B文件ID?
有一个变量可能会影响到这一点,就像用户的时间比另一个更快或更慢。
答案 0 :(得分:2)
不,只要两个交易都在同一个连接中执行,用户A就没有机会获得用户B的文件ID。 MySQL非常智能,可以为不同的连接提供不同的自动增量ID,即使它们同时插入同一个表中也是如此。您甚至不必在事务中包装两个插入。
所以只要你使用mysql_insert_id()就没有任何问题 - 它总会像你期望的那样工作,也不会混淆ID,你可以完全安全地使用返回值mysql_insert_id作为与刚刚插入的记录相关的记录中的外键。