這一個讓我難住。我的三個客戶都收到了這個錯誤,但我不能在我的最後重現它!無法重現此[ODBC Microsoft Access驅動程序]語法錯誤
[Macromedia][SequeLink JDBC Driver][ODBC Socket][Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
一般,什麼會導致誰收到這樣的DB錯誤的不一致時,什麼樣的問題會阻止我能複製它在我結束?
這裏的代碼位,我相信是會導致錯誤:
<cfquery
name="rsAddSKUs"
datasource="#request.dsn#"
username="#request.dsnUsername#"
password="#request.dsnPassword#">
INSERT INTO
tbl_orderskus
(orderSKU_OrderID
, orderSKU_SKU
, orderSKU_Quantity
, orderSKU_UnitPrice
, orderSKU_SKUTotal
, orderSKU_Picked
, orderSKU_TaxRate
, orderSKU_DiscountID
, orderSKU_DiscountAmount)
VALUES
('#var.ThisOrderID#'
, #rsGetCart.SKU_ID#
, #rsGetCart.Qty#
, #rsGetCart.SKU_Price#
, #SKUTotal#
, 0
, #var.thisProductTax#
, #var.thisDiscountID#
, #var.thisdiscountAmount#)
</cfquery>
感謝, 比斯科蒂
另外,你應該使用'cfqueryparam'。在sql中直接使用原始客戶端值絕不是一個好主意 - 即使使用MS Access。 – Leigh
@Leigh大提示。爲了可伸縮性的原因,Im實際上正在將網站遷移到mySQL。使用cfqueryparam編碼有什麼缺點,或者更好的方法來處理SQL中的SQL注入? – BiScotti
沒有什麼是完全沒有怪癖的,但對於基本的cfquery保護,cfqueryparam是最好的選擇。另外它還有很多其他好處,例如類型檢查,列表處理,促進查詢計劃重用(幫助性能)。這些是使用它的主要原因。基本的sql注入保護只是一個獎金。 – Leigh