无法重现此[ODBC Microsoft Access驱动程序]语法错误
问题描述:
这一个让我难住。我的三个客户都收到了这个错误,但我不能在我的最后重现它!无法重现此[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>
感谢, 比斯科蒂
答
您可以登录“插入”命令日志文件,然后让你的客户得到他们向您发送日志文件以查看有问题的插入命令是什么?
我在想如果插入命令取决于用户输入,那么他们可能会输入一些奇怪的东西。
+0
你的观点很好。直到这个错误,我实现了cferror来通知我后面发生的错误种类! – BiScotti
另外,你应该使用'cfqueryparam'。在sql中直接使用原始客户端值绝不是一个好主意 - 即使使用MS Access。 – Leigh
@Leigh大提示。为了可伸缩性的原因,Im实际上正在将网站迁移到mySQL。使用cfqueryparam编码有什么缺点,或者更好的方法来处理SQL中的SQL注入? – BiScotti
没有什么是完全没有怪癖的,但对于基本的cfquery保护,cfqueryparam是最好的选择。另外它还有很多其他好处,例如类型检查,列表处理,促进查询计划重用(帮助性能)。这些是使用它的主要原因。基本的sql注入保护只是一个奖金。 – Leigh