在 MySql 中插入时将用户名更改为其 ID


Changing a Username to its ID upon insert in MySql

我对PHP和MySql相当陌生,目前,我正在努力理解如果外键输入是其父表中的用户名,我将如何更改外键输入。

目前我有这个:

$sql ="INSERT INTO Car(Name,UserID,TypeID) VALUES ('$_POST[Name]','$_POST[Username]','$_POST[Type]')";

只是为了澄清用户名和用户ID,如果来自另一个表,但我希望用户名能够与其ID匹配并插入到子表中

首先,我必须说您的查询容易受到SQL注入的影响。 这是因为您实际上是通过在查询中设置发布变量来信任用户的输入。 您可以在下面看到如何防止注射。

如何防止 PHP 中的 SQL 注入?

我不确定为什么要用用户名覆盖用户的 ID。 我建议有一个用户表,其中每个用户都有一行,然后该表的 ID 将成为用户的 ID。

编辑

您不必担心用户会记住他们的用户 ID。 您可以使用从前端提交的用户名来查找用于后端处理的用户 ID:

$result = SELECT userID FROM users WHERE username = $username

然后,您可以使用结果中的 userID 执行用户操作,然后使用用户的名字或用户名向用户报告。

编辑

创建用户时,我们不需要在 birds 表中实现用户名的使用(因为我们只是创建用户(。

用户登录(通过查询用户表(以验证用户名和密码是否匹配后,您可以创建一个存储用户名的$user全局变量。 当用户转到表单以提交他们最喜欢的鸟时,您可以使用包含用户名的全局$user变量插入到bird表中。

这是你要做的地方:

$result = "INSERT INTO birds (column1,column2,column3,...) VALUES (value1,value2,value3,...)";

请记住,表上的id将自行递增。

对于MySQL表,您需要某种唯一标识符。 出于鸟类表的目的,您可以有一个简单的id,每次添加鸟类时都会自动递增。

希望这有帮助。