gpt4 book ai didi

jquery - 将大表单保存到多个表、规范化和动态查询

转载 作者:行者123 更新时间:2023-11-30 23:06:21 25 4
gpt4 key购买 nike

去年我发布了一个问题 here关于提交 50 个字段的表单,以及执行此操作的最佳方法。该解决方案仍在使用,并且运行良好。但是,为了构建这些动态查询,我最终得到了很多 <cfif>一直在重复,我想知道是否有更好的方法来处理这个问题。虽然代码最终变得“困惑”,但数据库因此当然非常干净,并且写入次数也保持在最低限度,但是是否有更好的方法来执行以下操作?

<cfif StructKeyExists(arguments.form,"data1") or StructKeyExists(arguments.form,"data2") or StructKeyExists(arguments.form,"data3")>
<cfquery>
insert into table1 (
<cfif StructKeyExists(arguments.form,"data1")>data1,</cfif>
<cfif StructKeyExists(arguments.form,"data2")>data2,</cfif>
<cfif StructKeyExists(arguments.form,"data3")>data3,</cfif>
userid
)
values (
<cfif StructKeyExists(arguments.form,"data1")><cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.form.data1#" maxlength="30">,</cfif>
<cfif StructKeyExists(arguments.form,"data2")><cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.form.data2#" maxlength="10">,</cfif>
<cfif StructKeyExists(arguments.form,"data3")><cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.form.data3#" maxlength="25">,</cfif>
<cfqueryparam cfsqltype="cf_sql_smallint" value="#arguments.form.userid#" maxlength="5">
)
on duplicate key update
<cfif StructKeyExists(arguments.form,"data1")>data1=values(data1),</cfif>
<cfif StructKeyExists(arguments.form,"data2")>data2=values(data2),</cfif>
<cfif StructKeyExists(arguments.form,"data3")>data3=values(data3),</cfif>
userid=values(userid)
</cfquery>
</cfif>

出于某种原因,这种“感觉”不对。例如,宁愿有更多的写入,将每个值拆分成它自己的更新,会不会更聪明,像这样:

<cfif StructKeyExists(arguments.form,"data1")>
<cfquery>
insert into table1 (data1,userid)
values (<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.form.data1#" maxlength="30">,<cfqueryparam cfsqltype="cf_sql_smallint" value="#arguments.form.userid#" maxlength="5">)
on duplicate key update data1=values(data1),userid=values(userid)
</cfquery>
</cfif>

或者是否有更好的方法来做到这一点我完全忽略了?!

最佳答案

如果您知道您有多达 50 个字段,并且它们的名称都一致 (data1 ... dataN),我只需要一个循环。像这样的东西:

<cfloop index="i" from="1" to="50">
<cfif StructKeyExists(arguments.form, "data#i#")>
<cfquery>
insert into table1 (data#i#,userid)
values (<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.form['data' & i]#" maxlength="30">,<cfqueryparam cfsqltype="cf_sql_smallint" value="#arguments.form.userid#" maxlength="5">)
on duplicate key update data#i#=values(data#i#),userid=values(userid)
</cfquery>
</cfif>
</cfloop>

关于jquery - 将大表单保存到多个表、规范化和动态查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21723588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com