2012-08-03 56 views
0

表單提交後,調用javascript函數。 JS檢查是否有任何數據輸入到字段中。成功時,加載此CF頁面。該頁面是ajax負載,這就是爲什麼我沒有使用#form.value#。sql in Coldfusion中從oracle中選擇

查詢是什麼搞砸了我。

<cfset fieldList = url.searchFields> 
<cfset fieldArray = listToArray(fieldList)> 
<!--- The fieldArray has the form field names and values in a one-dimensional array 
so every odd index is a title and every even index is a value. Hence the step=2 --- 
<cfloop index="testing" from="1" to=#ListLen(fieldList)# step="2"> 
    <cfif fieldArray[testing] is 'searchID'> 
     <cfset itemid = fieldArray[testing + 1]> 
     <cfoutput>itemid = #itemid#</cfoutput> 
    </cfif> 
    <cfif fieldArray[testing] is 'searchName'> 
     <cfset itemtitle = fieldArray[testing + 1]> 
     <cfoutput>itemtitle = #itemtitle#</cfoutput> 
    </cfif> 
    <cfoutput>#fieldArray[testing]# #fieldArray[testing + 1]#</cfoutput> 
</cfloop> 

    <cfquery name="searchItems" datasource="#thedb#"> 
     SELECT * 
     FROM spp_items 
     WHERE avail_mode LIKE '0' 
     <cfif isDefined('url.categoryID')> AND categoryid = #url.categoryID#</cfif> 
     <cfif isDefined('itemid')> AND itemid = #itemid#</cfif> 
<!--- if I comment this next line out, the query works fine ---> 
     <cfif isDefined('itemtitle')> AND itemtitle LIKE #itemtitle#</cfif> 
    </cfquery> 

爲什麼不工作我的查詢:我已經通過了代碼的其餘部分多次,有當itemtitle行被添加到查詢錯誤是唯一的時間運行?再次,我已經檢查過表單submit,js函數和coldfusion語法都是有效的。只有當這行被添加到查詢中時,它纔會中斷。謝謝。

+0

itemtitle的值是否包含單引號?否則,你會從Oracle得到一個語法錯誤。另外,你會得到什麼錯誤?如果你不容易看到,要麼使用Fiddler觀看AJAX調用,要麼你只從CF獲得500錯誤,嘗試添加檢查日誌或在代碼頂部插入 barnyr 2012-08-03 12:28:37

+0

您也可以考慮在此查詢中使用cfqueryparam,因爲它有助於消除輸入 – barnyr 2012-08-03 12:29:39

回答

2

看代碼,我不能看到你周圍的itemtitle值加上引號,它看起來像你當前正在執行一條線,它看起來像:

AND itemtitle LIKE something 

代替:

AND itemtitle LIKE 'something' 
+0

啊!我知道這是愚蠢的!我花了數小時的時間...我會在一分鐘內接受你的回答。你知道爲什麼它現在只在表單字段完全匹配時才起作用嗎?不應該「匹配」匹配任何匹配的字符,而不僅僅是匹配整個單詞嗎? – 2012-08-03 12:32:56

+2

只有當你給它「%」的通配符時,所以如果你想在字符串b中的任何地方找到字符串,那麼你需要'LIKE'%something%'' – 2012-08-03 12:35:12

+0

你是最棒的。謝謝。 – 2012-08-03 12:35:34