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