我需要动态构造一组JOIN语句,其中表名和列名从另一个ColdFusion查询传入。将字符串值传递给语句时,CFQUERYPARAM会在其周围添加单引号 - 这是CFQUERYPARAM的一部分。鉴于这会破坏SQL语句,在这种情况下是否可以不使用CFQUERYPARAM,而是确保传入的查询被清除,或者是否存在允许使用CFQUERYPARAM的方法? (我可以使用Fusebox中的电路/保险丝权限锁定这些代码。)
感谢。
答案 0 :(得分:3)
cfqueryparam
不会添加单引号 - 它使用绑定变量。
我立刻怀疑语句“动态构造一组JOIN语句” - 如果你动态加入,听起来并不一定正确地做事。
但是,对于表格/列名称,一旦您完全清理 - 如果cfqueryparam
不起作用且您需要cf变量 - 那么是 ,你可以直接使用CF变量。
注意:要安全清理,您可以使用rereplacenocase(table_name,'[^a-z_]','','all')
删除a-z和下划线以外的所有内容。
答案 1 :(得分:1)
您可以使用其中两个来转义单引号。您还可以使用preserveSingleQuotes函数。