Guy*_*ver 3 coldfusion coldfusion-9
假设我有一个如下所示的查询.如果我不知道会有多少结果,那么将每个值放入数组的最佳方法是什么?通常我会用循环来做这个,但我不知道有多少结果.我是否需要运行另一个查询来首先计算结果?
<CFQUERY name="alllocations" DATASOURCE="#DS#">
SELECT locationID
FROM tblProjectLocations
WHERE projectID = '#ProjectName#'
</CFQUERY>
Run Code Online (Sandbox Code Playgroud)
根据您对数组的要求,您可以直接引用该列以进行大多数数组操作,例如:
i = arrayLen(alllocations["locationID"]);
Run Code Online (Sandbox Code Playgroud)
使用该表示法将适用于大多数阵列操作.
请注意,这不"创建数组",这是一个简单的事情,一个查询列-一个coldfusion.sql.QueryColumn对象是非常接近CFML阵列CF能够是一个数组时,将其转换为一个需要.因此,列可以传递给数组函数.
什么人不能做到这一点:
myArray = q["locationID"];
Run Code Online (Sandbox Code Playgroud)
这是因为默认情况下,q["locationID"]如果可以,CF将视为字符串,并且字符串值是查询中locationID列的第一行中的值q.只有在实际需要数组时才会将CF转换为数组.这基本上是松散打字的工作原理.
因此,如果您只需要将查询列传递给需要数组的某个函数,则可以使用上面的语法.如果您想将列实际放入变量中,那么您需要执行以下操作:
myArray = listToArray(valueList(q.localtionID));
Run Code Online (Sandbox Code Playgroud)
注意:确保使用<cfqueryparam>过滤器值而不是将它们硬编码到SQL语句中.
| 归档时间: |
|
| 查看次数: |
868 次 |
| 最近记录: |