2010-04-02 28 views
2

在我的CF組件中,我試圖過濾來自用戶輸入(getSearchString)的數據並運行代碼,我遇到了WHERE函數的問題。可以建議什麼是正確的方法?其中參數

<cffunction name="getParks" access="remote" returntype="struct"> 
<cfargument name="page" required="true" /> 
<cfargument name="pageSize" required="true" /> 
<cfargument name="gridsortcolumn" required="true" /> 
<cfargument name="gridsortdirection" required="true" /> 
<cfargument name="getSearchString" default="" /> 

<cfif arguments.gridsortcolumn eq ""> 
    <cfset arguments.gridsortcolumn = "parkName" /> 
    <cfset arguments.gridsortdirection = "asc" /> 
</cfif> 

<cfquery name="parks" datasource="cfdocexamples"> 
    select  parkName, parkType, city, state 
    from  parks 
    where  <cfqueryPARAM value = "#getSearchString#" CFSQLType = "CF_SQL_VARCHAR"> 
    order by #arguments.gridsortcolumn# #arguments.gridsortdirection# 
</cfquery> 

<cfreturn queryconvertforgrid(parks, page, pagesize) /> 

回答

4

這似乎是一個簡單的SQL錯誤。您希望與您的搜索字符串進行比較的字段丟失。

而應是:

<cfquery name="parks" datasource="cfdocexamples"> 
    select  parkName, parkType, city, state 
    from  parks 
    where  parkName = <cfqueryPARAM value = "#getSearchString#" CFSQLType = "CF_SQL_VARCHAR"> 
    order by #arguments.gridsortcolumn# #arguments.gridsortdirection# 
</cfquery> 
+0

它工作但CFGrid運行代碼時不加載任何數據。 – proyb2 2010-04-02 12:03:56

+0

抱歉,它與該參數周圍的%..%一起工作 – proyb2 2010-04-02 12:06:46

0

acctually不在身邊PARAM而是圍繞getSearchString: WHERE parkName像... 「#%#getSearchString%」 ......但有一樣的性能問題要注意,如果還你有大量的條目,dataGrid不會做真正的分頁。全面解決方案取決於您的數據庫類型。