我們有一個通過表單元素動態循環的腳本,併爲我們的PostgreSQL數據庫創建一條INSERT語句。我從字段值轉義所有單引號,但查詢本身仍然失敗。但是,如果我直接在pgAdmin中運行查詢,它的工作原理!我失去了爲什麼。Coldfusion SQL錯誤
<cfset queryfields = "--already defined--">
<cfset queryvalues = "" />
<cfloop list="#fieldList#" delimiters="," index="f">
<cfif StructKeyExists(form, f)>
<cfset queryvalues = queryvalues & "'" & Replace(form[f], "'", "\'", "all") & "'," />
</cfif>
</cfloop>
<!--- Remove trailing commma --->
<cfset queryvalues = Left(queryvalues, len(queryvalues) - 1) />
<cftransaction>
<cfquery name="qInsertOrder" datasource="#DSN#">
INSERT INTO foo_trans (#queryfields#)
VALUES(#queryvalues#)
</cfquery>
</cftransaction>
INSERT INTO paypal_trans(TransDate,mc_gross,address_status,payer_id,稅務,address_street,PAYMENT_STATUS,字符集address_zip,如first_name)VALUES('08/22/2011' , '50.00', '確認', 'ABCD4321','0.00','1 Main Road','Completed','windows-1252','10505','Bob O'Malley')-------------- ---------------錯誤執行數據庫查詢。 (錯誤:在語法錯誤或接近 「08」)
問題是我無法輸入查詢的各個字段和變量,原因是我不會介入。否則,我會立即使用'cfqueryparam',而沒有這個問題。 –
你應該不需要。只需將所有內容都設置爲cf_sql_varchar即可。你失去了類型檢查,但這基本上就是你現在正在做的事情。除此之外,這個概念是一樣的。請給我一分鐘來展示一個例子。 – Leigh
查看我的更新回覆。 – Leigh