首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ColdFusion & MSSQL :如何在一个提交中插入一个唯一id的多行

ColdFusion & MSSQL :如何在一个提交中插入一个唯一id的多行
EN

Stack Overflow用户
提问于 2012-11-22 08:10:26
回答 2查看 3.7K关注 0票数 4

有人能帮助我如何在一次提交中提交多行吗?

此调查表将显示一组源自表格技能的技能。教师必须在复选框中检查学生的技能,然后单击submit。

一个学生可以有一项以上的技能。如果他有3项技能,那么一旦老师点击提交按钮,发送到数据库的数据就会排在3行。(表学生技能)

代码语言:javascript
复制
<cfoutput query="skill">
<tr>
    <td>#skill.skillname#</td>
    <td align="center">:</td>
    <td><input type="checkbox" name="skillid" value="skillid" checked="checked"></td>
</tr>
</cfoutput>

表格技巧

代码语言:javascript
复制
+---------+------------+
| skillid | skillname  |

+---------+------------+

| 1       | draw       |

+---------+------------+

| 2       | read       |

+---------+------------+

| 3       | dance      |

+---------+------------+

表格学生技能

代码语言:javascript
复制
+----------+----------|

|studentid | skillid  |

+----------+----------+
| 001      | 1        |
| 001      | 2        |
| 002      | 1        |
| 002      | 2        |
| 002      | 3        |
+----------+----------+
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-23 21:59:58

插入多条记录的另一种简单方法是INSERT .. SELECT。(在张贴的链接banyr中也提到)。因为技能id存储在另一个表中,所以可以使用IN子句来对它们进行SELECT。然后使用简单的查询将这些值直接插入到另一个表studenSkill中,而不是循环。

代码语言:javascript
复制
INSERT INTO studenSkill ( studenId, skillId )
SELECT <cfqueryparam value="#form.studentId#" cfsqltype="cf_sql_integer">
       , skillId
FROM   skill
WHERE  skillId IN 
       (
       <cfqueryparam value="#form.skillId#" cfsqltype="cf_sql_integer" list="true">
       )

<input type="checkbox" name="skillid" value="skillid" checked="checked">

顺便说一句,如果这不是一个错误,请不要忘记查询列名(即"skillid“)周围的#符号

代码语言:javascript
复制
  <input type="checkbox" name="skillid" value="#skillid#" checked="checked">
票数 1
EN

Stack Overflow用户

发布于 2012-11-22 09:39:16

假设您使用的是SQL server 2008,您应该能够使用以下语法:

代码语言:javascript
复制
INSERT INTO StudentSkill (StudentID, SkillID)
VALUES (100, 1), (100, 2), (100, 3)

这个方法是从这里中收集的,它还包含了几个可选的方法。

您只需要迭代FORM.skillid中的in列表(假设您的表单是这样工作的),就可以构建上面的SQL。此外,在构建SQL时,请确保对值使用<CFQueryParam>。下面的代码应该这样做:

代码语言:javascript
复制
<cfif ListLen(FORM.skillid)>
  <cfquery>
   INSERT INTO StudentSkill (StudentID, SkillID)
    VALUES
   <cfloop list="#form.skillid#" index="skill">
     (<cfqueryparam value="#form.studentID#" CFSQLType="CF_SQL_INTEGER">, 
       <cfqueryparam value="#skill#" CFSQLType="CF_SQL_INTEGER">)
   </cfloop>
  </cfquery>
</cfif>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13508291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档