2014-09-03 122 views
2

这看起来像是一件简单的事情,但我没有太多的运气来找到我要找的东西。我有一个查询返回一个我想作为变量存储的Id。我期待着看看是否有办法做到这一点,而不使用<cfoutput>标签,因为我想这似乎并不是真的输出任何东西。将单个查询结果保存为一个变量

//declare variable 
<cfset documentType = 0> 

<cfquery datasource="mssql" name="GetDocType"> 
    Select Id 
    From DocTypes 
    Where Description = 'MyType' 
</cfquery> 

我想将此查询的结果存储到documentType变量中。再次,我知道这似乎很简单,但我迄今还没有看到任何例子,这些例子确实使我朝着正确的方向前进。 (免责声明,我是一个.NET开发人员,多年来我已经给出了我的第一个ColdFusion项目 - 所以这可能确实非常基础!)

回答

4

这似乎工作,但我不确定它是否是“最佳实践”。

<cfset documentType = GetDocType.Id> 

因为我知道,我只会有一个行,我想我可能只是引用,我想列,而无需做任何循环。

如果有人有任何其他想法或更好的方法,那么让我知道!

+1

这是我该怎么做,不需要cfoutput。 – 2014-09-03 14:13:31

+2

这很好。这就是人们如何去做的。这就是说,*最佳做法*将不会调用您的查询“GetDocType”。 'GetDocType'听起来像一个函数,而不是一个变量;-) – 2014-09-03 14:16:03

+0

@AdamCameron - 哈哈,够公平:)感谢我的方法验证! – Tommy 2014-09-03 14:39:31

1

您想验证.RecordCount大于0和以下内容:

<cfset documentType = GetDocType.Id[1]> 

1记录编号;我相信当不循环时,这就是您访问记录集中特定行的方式。

+2

没必要。如果您不提供行号,它将默认为第一行。如果查询返回零行,则该变量将只是一个空字符串。 – ale 2014-09-04 03:01:20

相关问题