Coldfusion 使用用户输入的表单变量进行CF查询

Coldfusion 使用用户输入的表单变量进行CF查询,coldfusion,Coldfusion,我正在尝试执行一个查询,将我的trans_location列与用户输入的表单数据相匹配。我有一个下拉列表,让用户选择多个位置。当他们选择多个位置时,会在每个位置之间放置逗号。当我只选择一个位置时,结果会返回正确的位置。但当我选择多个位置时,它找不到任何位置。逗号是否只表示一个名称,而不会搜索每个位置 我也尝试过这样做: 和trans_location=您需要结合使用带有list=true属性的cfqueryparam。以下是cfqueryparam的快速有用教程: 最后:总是,总是,总是在向数据

我正在尝试执行一个查询,将我的trans_location列与用户输入的表单数据相匹配。我有一个下拉列表,让用户选择多个位置。当他们选择多个位置时,会在每个位置之间放置逗号。当我只选择一个位置时,结果会返回正确的位置。但当我选择多个位置时,它找不到任何位置。逗号是否只表示一个名称,而不会搜索每个位置

我也尝试过这样做: 和trans_location=

您需要结合使用带有list=true属性的cfqueryparam。以下是cfqueryparam的快速有用教程:

最后:总是,总是,总是在向数据库发送参数时使用cfqueryparam

<cfset result = {} />
<cftry>
    <cfset date1 = CREATEODBCDATETIME(form.StartDate & '00:00:00')>
    <cfset date2 = CREATEODBCDATETIME(form.EndDate & '23:59:59')>

    <cfquery datasource="#application.dsn#" name="GetLocationInfo">
        SELECT  *
        FROM    cl_checklists
        WHERE   date >=  <cfqueryparam value="#date1#" cfsqltype="cf_sql_timestamp" />
                AND date <= <cfqueryparam value="#date2#" cfsqltype="cf_sql_timestamp" />
                AND trans_location IN ( <cfqueryparam value="#FORM.location#" cfsqltype="cf_sql_varchar" list="true" />  )
    </cfquery>

<cfoutput>#date1#</cfoutput>
<cfoutput>#date2#</cfoutput>

<cfdump var="#GetLocationInfo#">

    <cfcatch type="any">
        <cfset result.error = CFCATCH.message >
        <cfset result.detail = CFCATCH.detail >
    </cfcatch>
</cftry>
您需要将与具有list=true属性的cfqueryparam结合使用。以下是cfqueryparam的快速有用教程:

最后:总是,总是,总是在向数据库发送参数时使用cfqueryparam

<cfset result = {} />
<cftry>
    <cfset date1 = CREATEODBCDATETIME(form.StartDate & '00:00:00')>
    <cfset date2 = CREATEODBCDATETIME(form.EndDate & '23:59:59')>

    <cfquery datasource="#application.dsn#" name="GetLocationInfo">
        SELECT  *
        FROM    cl_checklists
        WHERE   date >=  <cfqueryparam value="#date1#" cfsqltype="cf_sql_timestamp" />
                AND date <= <cfqueryparam value="#date2#" cfsqltype="cf_sql_timestamp" />
                AND trans_location IN ( <cfqueryparam value="#FORM.location#" cfsqltype="cf_sql_varchar" list="true" />  )
    </cfquery>

<cfoutput>#date1#</cfoutput>
<cfoutput>#date2#</cfoutput>

<cfdump var="#GetLocationInfo#">

    <cfcatch type="any">
        <cfset result.error = CFCATCH.message >
        <cfset result.detail = CFCATCH.detail >
    </cfcatch>
</cftry>

与您的问题无关,但我发现允许多个选择的选择控件很容易出错。您可以考虑复选框。侧注释,如果需要在整个日期上进行筛选,正确的比较是在Coel> = { StaseDATEATWALL}}和Col < {NaySudiDeDeaTale}}。有关更多详细信息和正确的cf_sql_类型,请参阅。与您的问题无关,但我发现允许多个选择的选择控件很容易出错。您可以考虑复选框。侧注释,如果需要在整个日期上进行筛选,正确的比较是在Coel> = { StaseDATEATWALL}}和Col < {NaySudiDeDeaTale}}。有关更多详细信息和正确的cf\u sql\u类型,请参阅。