ColdFusion中具有数字名称的列上的QuerySetCell

ColdFusion中具有数字名称的列上的QuerySetCell,coldfusion,coldfusion-8,Coldfusion,Coldfusion 8,我正在尝试使用QuerySetCell更改查询对象中特定列的值,并收到以下错误: 列名必须是有效的变量名。它们必须以字母开头,并且只能包含字母、数字和下划线 出现此错误的原因以及此处的复杂性在于,我尝试更新的列具有一些整数作为名称,这些整数取自单独记录的键/ID。例如,查询可能包含三个名称为“6638、6639、6640”的列 现在,我明白了为什么会发生这个错误(虽然不一定是CF有这个限制的原因),但是我无法找到解决方法。更复杂的是,我无法更改初始查询如何设置列名,需要保留列名及其顺序,以便在我

我正在尝试使用QuerySetCell更改查询对象中特定列的值,并收到以下错误:

列名必须是有效的变量名。它们必须以字母开头,并且只能包含字母、数字和下划线

出现此错误的原因以及此处的复杂性在于,我尝试更新的列具有一些整数作为名称,这些整数取自单独记录的键/ID。例如,查询可能包含三个名称为“6638、6639、6640”的列

现在,我明白了为什么会发生这个错误(虽然不一定是CF有这个限制的原因),但是我无法找到解决方法。更复杂的是,我无法更改初始查询如何设置列名,需要保留列名及其顺序,以便在我将查询转换为JSON字符串并使用JSONified查询更新结果表时使用

以前有人遇到过这个问题吗?如果有,您是如何解决这个问题的,还是被迫更改初始查询中列的命名方式


使用CF8,并且能够在从Ajax处理程序返回JSONified查询后编辑该查询(如果这会造成差异)。

您可以使用括号符号设置查询中的值(至少您可以在CF9中进行设置-我没有安装CF8进行测试)

sytax非常简单:

<cfset queryName[columnName][row] = "some new value" />

根据您的示例,您可以使用以下内容:

<cfset myQuery["6638"][1] = "moo" />


这将第一行中“6638”列的值设置为“moo”。如果返回了多行,则需要设置每一行。

确认它可以在CF6之前工作(可能甚至更久)。太棒了,谢谢您的帮助!无论出于什么原因,我都假设更新查询中的值的唯一方法是使用querySetCell。像往常一样,最简单的解决方案也是最好的。