mysqli_insert_id可靠吗?

时间:2014-03-31 13:55:43

标签: php mysql insert auto-increment

我正在构建一个登录系统,该系统在一个名为users,sessions和log-ins的mysql数据库(PHP)中使用三个表。所有表都有一个自动增量索引。成功登录后,用户行将通过存储在新登录行中的值链接到会话行。我想知道mysqli_insert_id()在此过程中是否可以安全使用。我担心如果在会话行INSERT期间出现错误,登录行将收到不正确的会话索引号,并且用户将登录到错误的会话。

这会成为一个问题吗?如果是这样,有没有一个好方法来处理它?

3 个答案:

答案 0 :(得分:2)

该方法将产生可靠的结果如果

  • 最后INSERT次操作成功。
  • 在同一数据库连接上INSERT成功后,立即检查 结果。

大多数情况下,只要您使用相同的数据库句柄,只需调用INSERT然后获取插入的ID作为下一个操作就足够了。

框架会自动为您完成所有这些操作,因此通常不是您应该关注的内容。

答案 1 :(得分:0)

如果您想确保数据的完整性,你执行的操作,然后我建议你选择"全部或没有"做法。这意味着您的所有查询都将单独传递,否则它们都会失败,即使失败也是如此。您可以使用TRANSACTION& amp; MySQL中的ROLLBACK功能。有关详情,请访问:http://www.tutorialspoint.com/sql/sql-transactions.htm

答案 2 :(得分:-1)

如果你使用触发器

会更好 当您触发另一个

时,

触发器将执行查询

see this tutorial