使用WHERE子句插入INTO查询
我对INSERT INTO查询有问题 在注册表单中,当用户输入用户名并选择部门/中心作为助理时,我想将该用户名插入到表助理中。使用WHERE子句插入INTO查询
我试过的是;
$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
请有人帮我解决这个,明白这一点。
您可以:
- 插入到数据库表中的新行
- 更新数据库表中的现有行
只有当你试图更改现有行的值,做它有意义的是指定一个WHERE子句让数据库知道你想改变哪些值。 编辑:你能再次解释它到底是什么,你正试图实现?你想只插入一些用户填写表单吗?即那些选择助学金的部门? 为什么你不改变你的表结构是这样的: 表DEPARTMENT: 部门名称,部门ID
表USER: 用户名,部门ID(外键部)
编辑NR。 2:要做到这一点的方法是规范化你的表结构。假设发生以下某种情况:
- 您想稍后添加其他部门 - 您不希望每次都创建一个新表。
- 你想改变一个部门的名字 - 你想重命名你的表吗?改变你的代码,...我怀疑
所以要走的路是设计你的表,以他们分开你的程序中的不同“东西”的方式。您正在使用的一种类型是部门(助理,...)另一种类型的用户。作为一个粗略的起点,尝试为每个表创建一个表并尝试使用所谓的外键连接这些表。阅读这样的:
- 每个部门都有一个唯一的部门ID
- 每一位用户通过该用户部门-ID
您可以再后来就加盟这些表中查找相关的部门...
从用户选择u.userName,d.departmentName u INNER JOIN部门d ON u.departmentId = d。DepartmentID的
这将显示您的所有用户的姓名及其相关DEPARTMENTNAME
实际上有很多部门和中心,我想根据他们的部门分开用户名 – satish 2014-12-01 19:54:01
INSERT查询暗示将数据不存在的话。如果要插入从查询派生的值,则需要使用实际查询来获取它。 WHERE子句失败,因为在插入一行之前没有要检查的行。
有真的没有足够的信息来找出你想要做什么,但如果我们只是去对你的问题的这部分:
“我想只有选择部门/中心作为助学金用户名”
那么你很可能寻找一个INSERT..SELECT(假设您已经将数据已经插入到其他一些用户表“your_user_table”)
INSERT INTO bursary(UserName)
SELECT UserName from your_user_table
WHERE DepartCent='Bursary';
** WARNING **:这是因为这些参数可怕,不安全没有[妥善逃脱](http:// bobby-tables的.com/PHP)。您应该**绝不**将'$ _POST'数据直接放入查询中:它会创建一个巨大的[SQL注入漏洞](http://bobby-tables.com/)。 'mysql_query'是一个过时的接口,不应该被使用,它将被从PHP中删除。像[PDO这样的现代化替代品并不难学](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/)。像[PHP The Right Way](http://www.phptherightway.com/)这样的指南解释了最佳实践。 – tadman 2014-12-01 19:43:26
你确定要使用插入而不更新吗? – CBredlow 2014-12-01 19:43:35
'INSERT'语句没有'WHERE'子句,因为根据定义,它只用于添加新行,而不是修改现有行。你正在寻找'UPDATE bursary SET Username ='$ UserName'WHERE DepartCent ='Bursary'' – 2014-12-01 19:44:38