Coldfusion 将查询字符串插入到结构中

Coldfusion 将查询字符串插入到结构中,coldfusion,coldfusion-11,lucee,taffy,Coldfusion,Coldfusion 11,Lucee,Taffy,我使用taffy并将未知查询字符串传递给函数。我不知道预先传递的查询字符串值,所以我尝试在函数中使用它,但它不起作用。请给我指一下正确的方向 这是我的密码: <cffunction name="qrystringToStruct" returntype="any"> <cfargument name="myStruct" default="#structNew()#" type="struct"> <cfargument name="str" req

我使用taffy并将未知查询字符串传递给函数。我不知道预先传递的查询字符串值,所以我尝试在函数中使用它,但它不起作用。请给我指一下正确的方向

这是我的密码:

<cffunction name="qrystringToStruct" returntype="any">
    <cfargument name="myStruct" default="#structNew()#" type="struct">
    <cfargument name="str" required="true" default="">
    <cfscript>
        for(i=1; i LTE listLen(arguments.str,'&');i=i+1) {
        structInsert(myStruct, i, listGetAt(arguments.str,i,'&'));
        }
    </cfscript>
    <cfreturn myStruct>
</cffunction>

<cffunction name="getCourseById" taffy:verb="get" taffy:docs:hide>
  <cfargument name="structurl" type="any" default="" />
  <cfdump var="#structurl#">
 <cfdump var="#qrystringToStruct(structurl)#" abort> 
  <cfset var local = {} />

但我得到的只是[空字符串]

让我先说一句,我从来没有用过太妃糖。然而,尽管如此,我认为这与你在帖子中提到的问题无关。你的代码中有一些东西让我感到困惑

调用qrystringToStructstructurl传递一个参数,但函数定义有两个参数。 为什么要将myStruct声明为参数,然后在qrystringToStruct函数定义中声明?这毫无意义。 您说您将完整的url传递给http://localhost:9002/taffy/index.cfm//coursesMethods?credits=3&coursetitle=power? 为什么不使用cgi.QUERY\u字符串传递查询字符串部分? 不管怎样,我认为这太复杂了,不需要自定义函数来解析查询字符串。您只需要一行代码

<cfset qryString = listToArray(cgi.QUERY_STRING, "&")>

你可以在这里测试。

愚蠢的问题。url.*结构有什么问题?它会自动将http查询字符串更改为结构。@JamesAMohler问得好。然而,从他的问题的编写方式来看,听起来他好像不知道或无法预测url结构键。嗨,好的,谢谢,但我想我错过了我编写的查询,该查询是为了在查询命令中循环结构,这是我在发布问题时遇到的问题,我错过了。这是我试图做的查询:select*from course,其中1=1或kk=trimarguments.structurl['k']我将函数更改为:我在这里为您创建的函数设置了小提琴:@JJK Ok,在比较了您在原始帖子中尝试做的事情和更新的要点之后,现在我知道你在做什么了。再一次,你把事情复杂化了。您正在重新创建ColdFusion内置功能。正如James Mohler最初提到的,您需要的已经在url范围内。试试这个来验证。不需要自定义函数。@JJK-请编辑您的问题并附加当前代码,这样就可以清楚地知道您实际上在做什么。也就是说,1 James和user9263373可能是正确的,您不需要创建参数结构——您已经有了一个:URL范围。2决不要在SQL查询中使用原始客户端值。这是一种sql注入风险。3函数应始终使用局部作用域函数变量,包括循环索引,以避免线程问题。
<cfset qryString = listToArray(cgi.QUERY_STRING, "&")>