Arrays 如何将结构中数组的索引设置为变量(Coldfusion)

Arrays 如何将结构中数组的索引设置为变量(Coldfusion),arrays,coldfusion,Arrays,Coldfusion,这是我遇到的第一个错误: CFSQLTYPE CF_SQL_VARCHAR的无效数据[d6-2014-74,] 下面是相应的代码 <cfset x = Arguments.surveyDocNo> <cfprocparam cfsqltype="cf_sql_varchar" value="#x#"> 为了解决这个问题,我将代码更改为: <cfset x = Arguments.surveyDocNo[1]> 但是,返回此错误: 500您已

这是我遇到的第一个错误: CFSQLTYPE CF_SQL_VARCHAR的无效数据[d6-2014-74,]

下面是相应的代码

 <cfset x = Arguments.surveyDocNo>
 <cfprocparam cfsqltype="cf_sql_varchar" value="#x#">

为了解决这个问题,我将代码更改为:

 <cfset x = Arguments.surveyDocNo[1]>

但是,返回此错误:

500您已尝试将java.lang.String类型的标量变量作为具有成员的结构取消引用

所以数组问题已经解决了,但我不知道如何修复第二个错误

 <cfdump var="#arguments.surveyDocNo#">


我假设您有时将
surveyDocNo
参数作为字符串传递,有时作为字符串数组传递

<!--- if argument is passed as array, take the first element --->
<cfif isArray(Arguments.surveyDocNo) and (not arrayIsEmpty(Arguments.surveyDocNo))>
    <cfset x = Arguments.surveyDocNo[1]>
<cfelse>
    <cfset x = Arguments.surveyDocNo>
</cfif>

<!--- if the provided argument is not a string, throw an exception --->
<cfif not isSimpleValue(x)>
    <cfthrow type="IllegalArgumentException" message="The provided value for argument [surveyDocNo] is invalid. Expected a string.">
</cfif>

<cfprocparam cfsqltype="cf_sql_varchar" value="#x#">

我假设您有时将
surveyDocNo
参数作为字符串传递,有时作为字符串数组传递

<!--- if argument is passed as array, take the first element --->
<cfif isArray(Arguments.surveyDocNo) and (not arrayIsEmpty(Arguments.surveyDocNo))>
    <cfset x = Arguments.surveyDocNo[1]>
<cfelse>
    <cfset x = Arguments.surveyDocNo>
</cfif>

<!--- if the provided argument is not a string, throw an exception --->
<cfif not isSimpleValue(x)>
    <cfthrow type="IllegalArgumentException" message="The provided value for argument [surveyDocNo] is invalid. Expected a string.">
</cfif>

<cfprocparam cfsqltype="cf_sql_varchar" value="#x#">


在第一个屏幕截图中,surveyDocNo是一个数组,但在第二个屏幕截图中,它是一个字符串。如果将变量更改为不再是数组,则可以返回原始引用
参数。surveyDocNo
而不带索引值。@Miguel-F感谢您的快速响应。也许我理解不正确,但当我回到原始引用时,它又变成了一个数组。为了避免混淆,请您转储
参数。surveyDocNo
变量(不是整个结构)并发布屏幕截图。@Leigh我添加了您要求的信息。谢谢。它显然是一个数组,所以我看不出
如何可能抛出错误“…试图取消对标量变量的引用”。似乎是不同的代码导致了这个错误,或者我们知道有更多的事情发生了…?在第一个屏幕截图中,surveyDocNo是一个数组,但在第二个屏幕截图中,它是一个字符串。如果将变量更改为不再是数组,则可以返回原始引用
参数。surveyDocNo
而不带索引值。@Miguel-F感谢您的快速响应。也许我理解不正确,但当我回到原始引用时,它又变成了一个数组。为了避免混淆,请您转储
参数。surveyDocNo
变量(不是整个结构)并发布屏幕截图。@Leigh我添加了您要求的信息。谢谢。它显然是一个数组,所以我看不出
如何可能抛出错误“…试图取消对标量变量的引用”。似乎是不同的代码导致了这个错误,或者是我们意识到有更多的事情在发生。。。?