我正在尝试循环插入查询。我正在将值循环到返回结果列表中。
<cfquery datasource="#OLMSdatasourceWrite#" result="myResult">
INSERT INTO OLMS_Data_RatioScenarios
(
OLMS_Account_ID,
OLMS_RatioScenario_Name
)
VALUES
(
<cfloop list="#AccountListWithSettings#" index="CurrentAccount">
(<cfqueryparam cfsqltype="cf_sql_numeric" value="#CurrentAccount#" maxlength="255">, <cfqueryparam cfsqltype="cf_sql_clob" value="#requestBody.value#" maxlength="255">)
<cfif CurrentAccount GT 1>
,
</cfif>
</cfloop>
)
</cfquery>
<cfoutput>Inserted ID is: #myResult.generatedkey#</cfoutput>
我遇到的问题是它在最后一次迭代后继续放置“,”
VALUES ( ( (param 1) , (param 2) ) , ( (param 3) , (param 4) ) , ( (param 5) , (param 6) ) , )
我需要帮助弄清楚cfif语句以防止这种情况(注意:如果我把cfif放在查询参数上面,它就像(,(参数1),(参数2),
一样开始循环答案 0 :(得分:3)
您需要跟踪列表中的项目数,并检查当前项目的位置是否小于列表的长度:
nock
更新,根据@ Leigh的评论:您也可以采用这种方法。我把它作为第二种方法添加,因为即使它更简单,但通常我的思维并不是通过这个特定问题来思考的。对每一个他自己。 :)
<cfset numItems = ListLen(AccountListWithSettings)>
<cfset i = 1>
<cfloop list="#AccountListWithSettings#" index="CurrentAccount">
<!--- Stuff inside of loop --->
<!--- ...and then --->
<cfif i lt numItems>
,
</cfif>
<cfset i++>
</cfloop>