使用WHERE子句插入INTO查询

时间:2014-12-01 19:41:44

标签: php mysql insert-into

我在INSERT INTO查询中遇到问题, 在注册表单中,当用户输入用户名并选择部门/中心作为助理时, 我想将该UserName插入表助推器。

我尝试的是什么;

$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

请有人帮我解决这个问题,谢谢。

2 个答案:

答案 0 :(得分:0)

你可以:

  • 在数据库表中插入新行
  • 更新数据库表中的现有行

只有在尝试更改现有行的值时,才有必要指定WHERE子句以使数据库知道要更改的值。 编辑:你能再次解释一下你想要实现的目标吗?您是否只想填写填写表单的一些用户?即那些选择助学金作为他们的部门? 为什么不将表结构更改为: 表部门: 部门名称,部门ID

表用户: 用户名,部门ID(部门的外键)

编辑Nr。 2:这样做的方法是规范化表格结构。假设发生以下事情之一:

  • 您希望稍后添加其他部门 - 您不希望每次都为此创建新表。
  • 您想要更改部门的名称 - 是否要重命名表格?改变你的代码,......我怀疑

所以要走的路是设计你的桌子,以便他们分开不同的东西&#34;在你的程序中。你正在使用的一类是部门(助学金,......)另一类是用户。作为一个粗略的起点尝试为每个表创建一个表,并尝试使用所谓的外键连接表。读它是这样的:

  • 每个部门都有一个唯一的部门ID
  • 每个用户都通过此用户部门ID
  • 与部门相关联

稍后您可以加入这些表以找出X部门的所有用户,......

从User u INNER JOIN Department d ON中选择u.userName,d.departmentName u.departmentId = d.departmentId

这会显示所有用户及其相关departmentName的名称

答案 1 :(得分:0)

INSERT查询意味着添加尚未存在的数据。如果要插入从查询派生的值,则需要使用实际查询来获取它。 WHERE子句失败,因为在插入一行之前没有要检查的行。

确实没有足够的信息来确定你想要做什么,但如果我们继续你的问题的这一部分:

“我只想选择部门/中心的用户名作为助理”

然后你可能正在寻找一个INSERT..SELECT(假设你已经将数据插入到其他用户表'your_user_table')

INSERT INTO bursary(UserName) 
SELECT UserName from your_user_table
WHERE DepartCent='Bursary';