我在插入查询时遇到问题,在注册表中,当用户输入用户名并选择部门/中心作为助学金时,我想将该用户名插入表格助学金中。
我尝试的是;
$query14 = "INSERT INTO bursary (UserName) VALUES
('$UserName') WHERE DepartCent='Bursary'";
$result14=mysql_query($query14);
我的表名是助学金,看起来像;
UserID UserName
1 ( ) <---- I want only UserName that choose department/center as bursary
请任何人帮助我解决这个问题,欣赏这一点。
INSERT 查询意味着添加尚不存在的数据。如果要插入从查询派生的值,则需要使用实际查询来获取它。WHERE 子句失败,因为在插入行之前没有要检查的行。
真的没有足够的信息来弄清楚你想做什么,但如果我们只是继续你的问题的这一部分:
"我只想要选择部门/中心作为助学金的用户名">
那么你可能正在寻找一个插入。SELECT(假设您已经将数据插入到其他用户表"your_user_table"中(
INSERT INTO bursary(UserName)
SELECT UserName from your_user_table
WHERE DepartCent='Bursary';
您可以:
- 在数据库表中插入新行
- 更新数据库表中的现有行
仅当您尝试更改现有行的值时,才有必要指定 WHERE 子句,让数据库知道要更改哪些值。编辑:你能再次解释一下你想要实现的目标吗?是否只想插入一些用户填写表单?即那些选择助学金作为部门的人?为什么不将表结构更改为以下内容:表部门:部门名称、部门标识
表用户:用户名、部门 ID(部门的外键(
编辑 Nr. 2:方法是规范化表结构。假设发生了以下情况之一:
- 您希望稍后添加一个其他部门 - 您不希望每次都为此创建一个新表。
- 您要更改部门的名称 - 是否要重命名表?更改代码,...我怀疑
因此,要走的方法是以一种将程序中的不同"事物"分开的方式设计您的表。您正在使用的一种类型是部门(助学金,...(,另一种类型是用户。作为一个粗略的起点,尝试为每个表创建一个表,并尝试使用所谓的外键连接这些表。这样读:
- 每个部门都有一个唯一的部门 ID
- 每个用户都通过此用户部门 ID 关联到一个部门
然后,您可以稍后联接这些表,以找出部门 X 的所有用户,...
从用户中选择u.用户名,d.部门名称 u 内部加入部门 d 打开u.DepartmentId=d.DepartmentId
这将向您显示所有用户的名称及其关联的部门名称