首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PreserveSingleQuotes和CFQueryParam

PreserveSingleQuotes和CFQueryParam
EN

Stack Overflow用户
提问于 2015-10-14 12:50:20
回答 1查看 1.1K关注 0票数 1

我正在使用构建一个动态CFLoop SQL查询。我使用CFSaveContent迭代变量并构建查询,然后使用PreserveSingleQuotesCFQuery中执行它。这很好,但是这个方法的问题是我不能使用CFQueryParam,所以我的查询很容易被注入。想知道这个问题有什么解决办法吗?

更新:

代码语言:javascript
复制
    <cfsavecontent variable="sqlstring">
            SELECT   id
                    ,(CASE
                        <cfloop query="qGetRules">
                            WHEN val1 >=#qGetRules.equ# AND val2 >#arguments.leve# THEN 1
                        </cfloop>
                        ELSE 0
                         END) AS criteria
            FROM mt4_users
    </cfsavecontent>


    <cfquery name="qGetEquity" datasource="mydatasource">
        #PreserveSingleQuotes(variables.sqlstring)#
    </cfquery>

因此,在这个例子中,如您所见,我不能使用cfqueryparam作为arguments.leve,因为它会崩溃在PreserveSingleQuotes

EN

回答 1

Stack Overflow用户

发布于 2015-10-14 15:28:57

诀窍是使用list参数的cfqueryparam。它将正确地格式化查询、转义引号(如果需要)和所有的数据。

如果列表为数值(例如,在WHERE X IN (1,2,3,4)语句中):

<cfqueryparam value="#arguments.foo#" cfsqltype="cf_sql_integer" list="true">

如果列表为字符串值:

<cfqueryparam value="#arguments.foo#" cfsqltype="cf_sql_varchar" list="true">

这也适用于cfprocparam

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33125810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档