我正在构建一个登录系统,该系统在一个名为users,sessions和log-ins的mysql数据库(PHP)中使用三个表。所有表都有一个自动增量索引。成功登录后,用户行将通过存储在新登录行中的值链接到会话行。我想知道mysqli_insert_id()
在此过程中是否可以安全使用。我担心如果在会话行INSERT
期间出现错误,登录行将收到不正确的会话索引号,并且用户将登录到错误的会话。
这会成为一个问题吗?如果是这样,有没有一个好方法来处理它?
答案 0 :(得分:2)
该方法将产生可靠的结果如果:
INSERT
次操作成功。INSERT
成功后,立即检查 结果。大多数情况下,只要您使用相同的数据库句柄,只需调用INSERT
然后获取插入的ID作为下一个操作就足够了。
框架会自动为您完成所有这些操作,因此通常不是您应该关注的内容。
答案 1 :(得分:0)
如果您想确保数据的完整性,你执行的操作,然后我建议你选择"全部或没有"做法。这意味着您的所有查询都将单独传递,否则它们都会失败,即使失败也是如此。您可以使用TRANSACTION& amp; MySQL中的ROLLBACK功能。有关详情,请访问:http://www.tutorialspoint.com/sql/sql-transactions.htm
答案 2 :(得分:-1)