我正在尝试将一小段复杂的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
任何人都可以查看我在这里做错了什么
答案 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>