获取Coldfusion复杂对象错误但没有复杂的对象

时间:2012-06-25 21:35:40

标签: coldfusion

我得到“复杂对象类型无法转换为简单值。”locationId和/或operatorId通过url发送,并且始终是一个简单的数字('304')。这是查询的代码:

select  *
from  table1, table2
where table1.u_construct_id(+)=table2.u_construct_id  
and table1.LOCATION_ID  = #locationId#
and   table1.OPERATOR_ID = #operatorId#

2 个答案:

答案 0 :(得分:8)

完整 错误详情有哪些?它是否专门指向查询,或者只是指向查询附近的一行,这导致您假设查询有错。

(到目前为止,您发布的内容中没有任何内容表明这是一个查询问题。)

在任何情况下,您的查询当前都会受到SQL注入的影响,应该更改为:

select  *
from  table1, table2
where table1.u_construct_id (+)= table2.u_construct_id  
and table1.LOCATION_ID = <cfqueryparam value="#url.locationId#" cfsqltype="cf_sql_integer" />
and table1.OPERATOR_ID = <cfqueryparam value="#url.operatorId#" cfsqltype="cf_sql_integer" />

请注意,除了cfqueryparam(通常应该用于所有动态变量,尤其是客户端提供的变量),这两个变量已经url作用域,并且可能正确地确定了变量的范围是修复(如果其他范围中存在locationId或operatorId,则为非简单变量)。

答案 1 :(得分:-3)

感谢所有帮助,但答案结果是必须重命名operatorId。不知道为什么会起作用,但怀疑CF认为这是一个保留的术语。