将结构转换为查询

时间:2016-02-12 04:44:37

标签: coldfusion

我正在尝试将一小段复杂的coldfusion结构转换为查询以在我的页面中使用:

我有以下代码,我尝试了一些转换

<cfset l = "Pame=Program A&Co_Test=0&Programs2Product_ID=1
                &Product_Type_ID=1&Clients2Product_ID=422&Program_ID=1
                &S_Name=MASQW&Product_Template=BGTt&Name=MMMLD
">
<cfset q = queryNew("")>
<cfloop list="Pame,Co_Test,Programs2Product_ID,Product_Type_ID,
  Clients2Product_ID,Program_ID,S_Name,Product_Template,Name" index="k">
    <cfset queryAddColumn(q, "#k#", listToArray(listlast(l,"="),"&"))>
</cfloop>
<cfdump var="#q#">

它会转换为查询,但对于所有列,它只会添加最后一个v MMMLD

任何人都可以查看我在这里做错了什么

1 个答案:

答案 0 :(得分:6)

您的问题是您在变量listLast()上使用l,这是整个字符串,因此它总是会根据分隔符(在本例中为MMMLD)为您提供最后一个值。我让这个适合我:

<cfset q = queryNew("")>
<cfset l = "Pame=Program A&Co_Test=0&Programs2Product_ID=1
                &Product_Type_ID=1&Clients2Product_ID=422&Program_ID=1
                &S_Name=MASQW&Product_Template=BGTt&Name=MMMLD
">

<cfset keyValueArray = listToArray(l, '&')>
<cfloop array="#keyValueArray#" index="i">
    <cfset keyValuePair = listToArray(i, '=')>
    <cfif arrayLen(keyValuePair) EQ 2>
        <cfset queryAddColumn(q, keyValuePair[1], [keyValuePair[2]])>
    </cfif>
</cfloop>