如果我有一个带有SQL代码(如#PreserveSingleQuotes(arguments.sql)# )的变量
这个问题是Variable as SQL in cfquery的后续问题。
发布于 2013-07-14 10:48:10
#1是个有趣的问题,因为你手头没有太多的选择。从ColdFusion的角度来看,您可以通过<cfquery>或Query.cfc运行它。另外,DB系统将能够接受包含SQL的字符串并执行它,但这实际上只是将问题从CF稍微抽象到DB。我不确定还有别的选择。
至于#2,在使用<cfquery>时,这是一个大问题,因为没有好的(或者至少是合理的)方法来减少SQL注入(当然也没有优化SQL编译过程的方法),因为参数化语句中的值的唯一方法是通过<cfqueryparam>,而且不能将这些方法嵌入到充满SQL的字符串中。这里的解决方案是使用Query.cfc (我不认为我建议使用Query.cfc,因为它是CFML语言( IMO)中实现最糟糕的部分),因为您可以在SQL字符串中指定位置参数或命名参数,并分别传递参数值。
最后,您应该始终将值作为参数传递,而不是在SQL语句中手动编码它们,如果这意味着不为SQL语句使用预先创建的字符串,那么就这样吧。
https://stackoverflow.com/questions/17637024
复制相似问题