mysql - Coldfusion 循环插入查询值

标签 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 放在查询参数之上,它会开始循环,如 (,(param 1),(param 2),

最佳答案

您需要跟踪列表中的项目数并检查当前项目的位置是否小于列表的长度:

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

更新,根据@Leigh 的评论:您也可以采用这种方法。我将其添加为第二种方法,因为即使它更简单,但我通常不会思考这个特定问题。每个人都有自己的。 :)

<cfset i = 1>

<cfloop list="#AccountListWithSettings#" index="CurrentAccount">
  <cfif i gt 1>
    ,
  </cfif>

  <!--- Stuff inside of loop --->

  <cfset i++>
</cfloop>

关于mysql - Coldfusion 循环插入查询值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42076240/

相关文章:

struct - 如何在带有 cfquery 列的结构中设置动态键名?

java - Android Studio Sql Server 连接

Mysql 多个用户使用 diff diff SQL_CALC_FOUND_ROWS 导致 diff diff 总行数

php - 将图像插入数据库

orm - Coldfusion ORM 关系 ID 列表

ColdFusion 日期字段的 JavaScript 日期格式

mysql - 请求已超过 CFQUERY 标记允许的时间限制错误

php - 与本地主机数据库的连接问题

coldfusion - 如何使用 cfscript 从另一个 cfm 页面调用 cfc 中的 cffunction?

t-sql - 从 cfquery 中删除事务