Coldfusion循环遍历插入查询值

时间:2017-02-06 19:59:59

标签: mysql coldfusion cfquery cfloop

我正在尝试循环插入查询。我正在将值循环到返回结果列表中。

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

一样开始循环

1 个答案:

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