使用CFQUERYPARAM在SQL中指定表/列名称

时间:2009-03-24 10:09:44

标签: sql coldfusion cfqueryparam

我需要动态构造一组JOIN语句,其中表名和列名从另一个ColdFusion查询传入。将字符串值传递给语句时,CFQUERYPARAM会在其周围添加单引号 - 这是CFQUERYPARAM的一部分。鉴于这会破坏SQL语句,在这种情况下是否可以不使用CFQUERYPARAM,而是确保传入的查询被清除,或者是否存在允许使用CFQUERYPARAM的方法? (我可以使用Fusebox中的电路/保险丝权限锁定这些代码。)

感谢。

2 个答案:

答案 0 :(得分:3)

cfqueryparam不会添加单引号 - 它使用绑定变量。

我立刻怀疑语句“动态构造一组JOIN语句” - 如果你动态加入,听起来并不一定正确地做事。

但是,对于表格/列名称,一旦您完全清理 - 如果cfqueryparam不起作用且您需要cf变量 - 那么 ,你可以直接使用CF变量。

注意:要安全清理,您可以使用rereplacenocase(table_name,'[^a-z_]','','all')删除a-z和下划线以外的所有内容。

答案 1 :(得分:1)

您可以使用其中两个来转义单引号。您还可以使用preserveSingleQuotes函数。