Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 将多个cfif转换为一个cfloop(形式值)_Jquery_Html_Sql_Sql Server_Cfml - Fatal编程技术网

Jquery 将多个cfif转换为一个cfloop(形式值)

Jquery 将多个cfif转换为一个cfloop(形式值),jquery,html,sql,sql-server,cfml,Jquery,Html,Sql,Sql Server,Cfml,我需要将一组静态cfif更改为一个cfloop,这样就可以覆盖所有可能的场景,尽管可能性不大。因此,如果他们碰巧添加了20个许可证,它将不会切断我没有手动编写的最后几个许可证 <cfquery name="AddLicenses" datasource="#datasource2#"> <cfif IsDefined("form.State_1") AND len(#form.State_1#) GT 0> INSERT INTO PreceptorsLicenses V

我需要将一组静态cfif更改为一个cfloop,这样就可以覆盖所有可能的场景,尽管可能性不大。因此,如果他们碰巧添加了20个许可证,它将不会切断我没有手动编写的最后几个许可证

<cfquery name="AddLicenses" datasource="#datasource2#">
<cfif IsDefined("form.State_1") AND len(#form.State_1#) GT 0>
INSERT INTO PreceptorsLicenses VALUES 
(#Session.PreceptorID#, '#form.State_1#', #form.LicenseExpMonth_1#, #form.LicenseExpYear_1#)
</cfif>
<cfif IsDefined("form.State_2") AND len(#form.State_2#) GT 0>
INSERT INTO PreceptorsLicenses VALUES 
(#Session.PreceptorID#, '#form.State_2#', #form.LicenseExpMonth_2#, #form.LicenseExpYear_2#)
</cfif>
<cfif IsDefined("form.State_3") AND len(#form.State_3#) GT 0>
INSERT INTO PreceptorsLicenses VALUES 
(#Session.PreceptorID#, '#form.State_3#', #form.LicenseExpMonth_3#, #form.LicenseExpYear_3#)
</cfif>
<cfif IsDefined("form.State_4") AND len(#form.State_4#) GT 0>
INSERT INTO PreceptorsLicenses VALUES 
(#Session.PreceptorID#, '#form.State_4#', #form.LicenseExpMonth_4#, #form.LicenseExpYear_4#)
</cfif>
<cfif IsDefined("form.State_5") AND len(#form.State_5#) GT 0>
INSERT INTO PreceptorsLicenses VALUES 
(#Session.PreceptorID#, '#form.State_5#', #form.LicenseExpMonth_5#, #form.LicenseExpYear_5#)
</cfif>


请注意,上面的代码仍然容易受到SQL注入的影响,并且容易受到其他问题的影响,例如超过可以发送到SQL Server的SQL的允许大小

你想循环什么?数字1到20?你的问题需要更多的解释。只要填写的字段更多,问题就会循环出现。因此,它不是1,而是一个变量,循环中只有一个insert语句。那么,您想循环名为state\n的表单字段吗?另外,请注意,您将需要进行比这里反映的更多的验证;您容易受到SQL注入的影响。您正在努力解决此练习的哪一部分?您只向我们展示了之前的代码,而不是您自己尝试解决的任何问题。你知道如何从1循环到n吗?你知道如何提取n是什么吗?您知道如何使用动态设置的变量名访问变量吗?哪些部分你不能做?你试过什么?还有,你是先查档案的吗?如何循环使用动态命名的表单字段是一个非常常见的问题。例如由于这个问题已经被反复回答了好几次,投票决定以重复的方式结束。虽然在技术上是有效的,但最好明确指定目标列名B,而不需要cfoutput标记。cfquery中的任何变量都将自动计算。C True数据库通常会限制sql语句的大小。然而,这个特定的查询不太可能超过它,因为它似乎使用数值和很少的列/迭代。或者,它也可以作为单独的查询执行。不管是哪种方式,都应该将其包装在事务中以确保数据完整性。上述代码仍然容易受到SQL注入的攻击。向他们展示正确的方法如何如果我重新编写代码,我认为应该如何做,海报将不会有一个明确的例子,回答他的问题的关键。出于同样的原因,我也没有展示SQL Server行构造函数语法。上面的内容可能回答了问题,但正如所写的那样,这是一个糟糕的示例。用原始代码解释事情是可以的,但是从长远来看,演示正确的方法做某事更有帮助。这不仅有利于提问者,也有利于下一个在搜索答案时遇到这条线索的人。如果你有时间,只需提交你自己更详细的答案,详细说明完美的实现,并完成它。
<cfoutput>
<cfset count = 10>
<cfquery name="AddLicenses" datasource="#datasource2#">
<cfloop from="1" to="#count#" index="i">
    <cfif IsDefined("form.State_#i#") AND len(form["State_#i#"]) GT 0>
    INSERT INTO PreceptorsLicenses VALUES
        (#Session.PreceptorID#, '#form["State_#i#"]#',#form["LicenseExpMonth_#i#"]#, #form["LicenseExpYear_#i#"]#)
    </cfif>
</cfloop>
</cfquery>
</cfoutput>