在我的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) />
发布于 2010-04-02 19:54:45
这似乎是一个简单的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>发布于 2010-04-02 22:16:01
实际上不是在param周围,而是在getSearchString周围: WHERE parkName LIKE ... "%#getSearchString#%“...但要注意LIKE的性能问题,而且如果你有大量的条目,dataGrid不会进行真正的分页。完整的解决方案取决于您的数据库类型。
https://stackoverflow.com/questions/2566447
复制相似问题