【发布时间】:2021-03-05 02:44:22
【问题描述】:
在许多关于 MySQL 的教程中,他们经常使用在用户创建帐户时自动创建的 ID。稍后,该 ID 用于搜索该配置文件或更新该配置文件。
问题:当我可以使用用户名进行搜索时,为什么我要在 MySQL 中使用 ID?
我也可以使用用户名在 MySQL 表中进行搜索,那么使用 ID 的优缺点是什么?
更新:
非常感谢您的反应! 因此,假设用户想要登录网站。他将提供用户名和密码。但是对于我的代码,我首先必须进行查询才能知道 ID,因为用户不知道 ID。这是正确的还是有其他方法可以做到?
如果我将用户的 ID 存储在 cookie 中,当用户登录时,我首先查看 ID 是否与用户名相符。然后检查密码是否正确。然后我可以使用 ID 进行查询。这是个好主意吗?当然,我会在所有这些上使用准备好的语句。
【问题讨论】:
-
可以在Wikipedia - Surrogate key上阅读代理键相关的优缺点
-
谢谢您,您对更新问题有任何想法吗?
-
在数据库中插入一行时,可以得到最后插入的ID。在 MySQL 中,您可以使用
[LAST_INSERT_ID()](http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id)信息函数来获取新生成的 ID。这意味着,您不必在创建用户之前生成 ID,但您必须将用户插入到保存密钥的表中。顺便说一句,如果您有更多问题,请随时将其作为新问题发布。 -
好的,谢谢,但我的意思是以下。假设用户创建帐户并在 4 天后登录,那么 LAST_INSERT_ID() 将不起作用。是否可以使用 cookie 直接从用户那里获取 ID?
-
对不起,我的错 :) 当用户登录时,它提供了一个用户名,您将通过检索相应的 ID 来检查该名称。您可以将 ID 存储在会话中,也可以将会话 ID 存储在 cookie 中。请在网上搜索这些东西。这个话题对于这个网站来说太板了(特别是在 cmets 中谈论它)
标签: mysql