【发布时间】:2012-12-09 02:26:25
【问题描述】:
这个让我难过。我的三个客户收到了这个错误,但我无法重现它!
[Macromedia][SequeLink JDBC Driver][ODBC Socket][Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句中的语法错误。
一般而言,什么会导致接收此类数据库错误的人出现差异,哪些问题会阻止我最终复制它?
这是我认为导致错误的代码:
<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 很棒的提示。出于可扩展性的原因,我实际上正在将站点迁移到 mySQL。使用 cfqueryparam 编码是否有任何缺点,或者在 mySQL 中处理 sql 注入的更好方法?
-
没有什么是完全没有怪癖的,但是对于基本的 cfquery 保护,cfqueryparam 是最好的选择。此外,它还有许多其他好处,例如类型检查、列表处理、促进查询计划重用(有助于提高性能)。这些是使用它的主要原因。基本的 sql 注入保护只是一个奖励。
标签: sql ms-access coldfusion coldfusion-9