通过循环结构插入 table
insert into table by looping over structure
我正在尝试插入代码,但它是在每一行中插入值,而不是问题中的问题值和答案中的答案值:
<cfset StructDelete(structform,'title')>
<cfset StructDelete(structform,'mode')>
<cfset StructDelete(structform,'formsubmission')>
<cfset StructDelete(structform,'file_upload')>
<cfset StructDelete(structform,'czContainer_czMore_txtCount')>
<CFSET StructDelete(structform,'action')>
<CFLOOP collection="#structform#" index="whichPair">
<cfset Questions = "question" & structform[whichPair]>
<cfset answer = "answer" & structform[whichpair]>
<cfquery name="insertData" datasource="aas">
insert into faqsquestions(question,answer,createdon,faqID)
values(<cfqueryparam cfsqltype="cf_sql_varchar" value="#Right(questions, Len(questions)-8)#">,
<cfqueryparam cfsqltype="cf_sql_longvarchar" value="#Right(answer, Len(answer)-8)#">,
<cfqueryparam cfsqltype="cf_sql_date" value="#CreateODBCDate(now())#">,
<cfqueryparam cfsqltype="cf_sql_integer" value="#getLastID#">)
</cfquery>
</CFLOOP>
- 谁能告诉我我在这里做错了什么,我知道我在循环内使用问题作为静态值作为
cfset
并有权删除那个没有意义的问题变量,但我当我完成修复我的代码时将删除它
问题和答案是这样的:
对于您要执行的操作,这是错误的循环类型。原因是结构循环迭代一次 - 对于每个 field。当你想要的是循环一次 - 对于每个 对 字段。
一个简单的选项是在您的表单中添加一个隐藏字段,其中包含对的总数。
<input type="hidden" name="NumberOfQuestions" value="#TheTotalNumberHere#">
然后使用带有 from
和 to
循环的总数。在每次迭代中,提取问题和答案字段的当前值,并在您的查询中使用它们:
<cfloop from="1" to="#FORM.NumberOfQuestions#" index="pairNum">
<cfset question = FORM["question"& pairNum]>
<cfset answer = FORM["answer"& pairNum]>
<cfquery ...>
INSERT INTO faqsQuestions(question,answer,createdon,faqID)
VALUES (
<cfqueryparam cfsqltype="cf_sql_varchar" value="#question#">
, <cfqueryparam cfsqltype="cf_sql_longvarchar" value="#answer#">
, <cfqueryparam cfsqltype="cf_sql_date" value="#now()#">
, <cfqueryparam cfsqltype="cf_sql_integer" value="#getLastID#">
)
</cfquery>
</cfloop>
我正在尝试插入代码,但它是在每一行中插入值,而不是问题中的问题值和答案中的答案值:
<cfset StructDelete(structform,'title')>
<cfset StructDelete(structform,'mode')>
<cfset StructDelete(structform,'formsubmission')>
<cfset StructDelete(structform,'file_upload')>
<cfset StructDelete(structform,'czContainer_czMore_txtCount')>
<CFSET StructDelete(structform,'action')>
<CFLOOP collection="#structform#" index="whichPair">
<cfset Questions = "question" & structform[whichPair]>
<cfset answer = "answer" & structform[whichpair]>
<cfquery name="insertData" datasource="aas">
insert into faqsquestions(question,answer,createdon,faqID)
values(<cfqueryparam cfsqltype="cf_sql_varchar" value="#Right(questions, Len(questions)-8)#">,
<cfqueryparam cfsqltype="cf_sql_longvarchar" value="#Right(answer, Len(answer)-8)#">,
<cfqueryparam cfsqltype="cf_sql_date" value="#CreateODBCDate(now())#">,
<cfqueryparam cfsqltype="cf_sql_integer" value="#getLastID#">)
</cfquery>
</CFLOOP>
- 谁能告诉我我在这里做错了什么,我知道我在循环内使用问题作为静态值作为
cfset
并有权删除那个没有意义的问题变量,但我当我完成修复我的代码时将删除它 问题和答案是这样的:
对于您要执行的操作,这是错误的循环类型。原因是结构循环迭代一次 - 对于每个 field。当你想要的是循环一次 - 对于每个 对 字段。
一个简单的选项是在您的表单中添加一个隐藏字段,其中包含对的总数。
<input type="hidden" name="NumberOfQuestions" value="#TheTotalNumberHere#">
然后使用带有 from
和 to
循环的总数。在每次迭代中,提取问题和答案字段的当前值,并在您的查询中使用它们:
<cfloop from="1" to="#FORM.NumberOfQuestions#" index="pairNum">
<cfset question = FORM["question"& pairNum]>
<cfset answer = FORM["answer"& pairNum]>
<cfquery ...>
INSERT INTO faqsQuestions(question,answer,createdon,faqID)
VALUES (
<cfqueryparam cfsqltype="cf_sql_varchar" value="#question#">
, <cfqueryparam cfsqltype="cf_sql_longvarchar" value="#answer#">
, <cfqueryparam cfsqltype="cf_sql_date" value="#now()#">
, <cfqueryparam cfsqltype="cf_sql_integer" value="#getLastID#">
)
</cfquery>
</cfloop>