我对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
,每次添加鸟类时都会自动递增。
希望这有帮助。