我正在使用ColdFusion开发Flash Builder \ Flex Mobile应用程序。我需要帮助来修复我的搜索功能。当我尝试搜索某些内容时,我必须输入确切的单词,否则它不返回任何内容。
如果我只键入"app"
,而不是"applet"
,则不返回任何内容。
搜索功能:
<cffunction name="getwordsSummaryByTerm" output="false" access="remote" returntype="Query" >
<cfargument name="searchStr" type="string" required="true" />
<cfset var qItem="">
<cfquery name="qItem" datasource="databaseyo">
SELECT *
FROM words
WHERE term = <CFQUERYPARAM CFSQLTYPE="CF_SQL_VARCHAR" VALUE="#ARGUMENTS.searchStr#">
</cfquery>
<cfreturn qItem>
</cffunction>
Flex代码:
protected function doSearch(event:MouseEvent):void
{
if(searchTerm.text!="")
{
getAllwordsResult.token = wordsService.getwordsSummaryByTerm(searchTerm.text);
}
else
{
getAllwordsResult.token = wordsService.getAllwords();
}
}
答案 0 :(得分:5)
尝试更新您的查询,以便搜索LIKE值而不是特定的EQUALS值。
SELECT *
FROM words
WHERE term LIKE <CFQUERYPARAM CFSQLTYPE="CF_SQL_VARCHAR" VALUE="%#ARGUMENTS.searchStr#%">
注意现在回绕查询参数值的“%”。
如果你想设置它,那么输入的内容将返回以相同方式开头的单词(即输入“app”返回“applet”和“apple”,但不是“dapple”)然后只删除第一个“ %“来自参数值。