Coldfusion 對 query 語句生成
一般的 query 查詢方式 <cfquery name="QryName" DataSource="ConnecttionName"> SELECT field-A,field-B FROM TableName WHERE strfield = '#sdata#' AND numfield = #ndata# AND dtmfield = #parseDatetime(dtdata)# </cfquery> 上面是純粹帶『查詢資料』進去 Query 語句時所使用的方式,SQL語句屬於固定類的, 但若你把它改成動態語句: <cfset qs = "strfield = '#sdata#' AND numfield = #ndata# AND dtmfield = #parseDatetime(dtdata)#"> <cfquery name="QryName" DataSource="ConnecttionName"> SELECT field-A,field-B FROM TableName WHERE #qs# </cfquery> 這個語句絕對會失敗的, 因為 Coldfusion 為了防止 SQL injection 所以會對 生成 SQL語句的變數裡 ' single-quotation 產生escape 字元,導致生成了不是你想像中的語句。 正確的作法,如果你希望使用動態語句生成,那就是加個指令要求ColdFusion不要去處理 single-quotation 問題即可解決: <cfset qs = "strfield = '#sdata#' AND numfield = #ndata# AND dtmfield = #parseDatetime(dtdata)#"> <cfquery name="QryName" DataSource="ConnecttionName"> SELECT fi