我正在尝试转换数据库列名列表并在查询中检查它.例如,这个列表:
<cfset permissionsLevelList = 'blnGalleryAdd,blnGalleryUpdate,blnGalleryDelete,blnGalleryMaster'>
Run Code Online (Sandbox Code Playgroud)
这不是以任何方式通过UI传递的.
所以,然后我将它转换为数组并尝试在我的查询中循环它
<cfset permissionsLevelArray = listToArray(permissionsLevelList)>
AND (
<cfloop array="#permissionsLevelArray#" index="i">
ap.#permissionsLevelArray[i]# = 1
<cfif i neq arrayLen(permissionsLevelArray)>OR</cfif>
</cfloop>
)
Run Code Online (Sandbox Code Playgroud)
但我得到的错误不能
cast [blnGalleryAdd] string to a number value
Run Code Online (Sandbox Code Playgroud)
因此,当我只想输出它时,编译器会尝试将其指定为变量.
有谁知道这方面的任何好的解决方法?
这个文档告诉我,当循环遍历数组时,index属性表示数组元素,而不是该元素的位置.您的错误消息强化了这一点
你所要做的就是改变这个:
<cfloop array="#permissionsLevelArray#" index="i">
ap.#permissionsLevelArray[i]# = 1
Run Code Online (Sandbox Code Playgroud)
对此
<cfloop array="#permissionsLevelArray#" index="i">
ap.#i# = 1
Run Code Online (Sandbox Code Playgroud)
与您的问题无关,但您并不需要这样:
<cfif i neq arrayLen(permissionsLevelArray)>OR</cfif>
Run Code Online (Sandbox Code Playgroud)
由于您使用的是or逻辑,因此您可以使用不等式启动或完成该块,并or在每次迭代时将该字放在循环中.像这样的东西:
and
(1 = 2
<cfloop>
or
this = that
</cfloop>
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |