我是PHP和MySql的新手, 目前,我很难理解如果它是来自其父表的ID的用户名,我将如何更改外键输入。
目前我有这个:
$sql ="INSERT INTO Car(Name,UserID,TypeID) VALUES ('$_POST[Name]','$_POST[Username]','$_POST[Type]')";
只是为了澄清来自另一个表的用户名和用户ID,但我希望用户名能够与其ID匹配,而不是将其插入到子表中
答案 0 :(得分:2)
首先,我必须说您的查询容易受到SQL注入攻击。这是因为您基本上通过在查询中设置post变量来信任用户的输入。您可以在下面看到如何防止注射。
How can I prevent SQL injection in PHP?
我不确定您为什么要用其用户名覆盖用户的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
,只要每次添加一只鸟就自动递增。
希望这有帮助。