我正在尝试使用QuerySetCell来更改查询对象中特定列的值,并且一直在收到此错误:
列名必须是有效的变量名。它们必须以字母开头,并且只能包含字母,数字和下划线。
此错误的原因以及此处的复杂性是我尝试更新的列具有一些整数作为名称,取自单独的记录的键/ ID。例如,查询可能包含三个名称为“6638,6639,6640”的列。
现在,我理解为什么会出现这种错误(虽然不一定是为什么CF有这个限制),但是无法提出解决方法。进一步的复杂性是我无法对初始查询集的列名称进行任何更改,并且需要保留列名称及其在将查询转换为JSON字符串并使用JSONified查询更新结果表时的顺序。
之前是否有人遇到此问题,如果是,您是如何解决此问题的,或者您是否被迫更改初始查询中列的命名方式?
使用CF8并且能够在从Ajax处理程序返回JSONified查询后编辑它,如果这会产生影响。
答案 0 :(得分:12)
您可以使用括号表示法在查询中设置值(至少可以在CF9中使用 - 我没有安装CF8进行测试)。
sytax非常简单:
<cfset queryName[columnName][row] = "some new value" />
从您的示例中,您可以使用:
<cfset myQuery["6638"][1] = "moo" />
这会将第一行中'6638'列的值设置为'moo'。如果要返回多行,则需要设置每一行。