CFQUERY 范围的问题

问题描述

据我所知

<cfquery name="groups">

相当于

<cfquery name="VARIABLES.groups">

在我的项目中,在不同的部分(在不同的函数内)有一个同名的 cfquery。

当有很多请求时,我开始收到来自 REST API (Coldfusion) 的奇怪响应,其中有不同的数据集。

通过实验,我意识到如果我在调用 cfquery 之前声明一个局部变量,这将解决问题,因为答案将完全写入函数变量,而不是全局变量

<cfset var groups = {} /> <cfquery name="groups">

此选项在所有测试用例中都能正常工作。

我的问题是:在函数内部为 cfquery 声明局部变量是否正确,或者是否有其他方法可以避免我的问题?

解决方法

您应该始终使用(在函数中时):

<cfset var groups = {} /> 
<cfquery name="groups">

or

<cfquery name="local.groups">

你也可以在函数内部使用局部作用域。如果不使用 var,您就可以有效地创建一个全局变量。在函数内部使用 var 或 local 将保护您再次避免在函数外部写入变量。