将多个cfif转换为cfloop(表单值)

时间:2015-08-20 23:26:00

标签: 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 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>

1 个答案:

答案 0 :(得分:-1)

<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>

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