【问题标题】:(ColdFusion + Access) Database Query Error "Too few parameters."(ColdFusion + Access) 数据库查询错误“参数太少”。
【发布时间】:2011-10-20 02:55:40
【问题描述】:

我正准备用这个把头发扯掉。

Error Executing Database Query.
[Macromedia][SequeLink JDBC Driver][ODBC Socket][Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 3.

The error occurred in [WITHHELD]: line 19

17 :                 WHERE      FNAME = #FORM.first#
18 :                 AND            LNAME = #FORM.last#
19 :                 AND            PASS = #FORM.pass#
20 :             </cfquery>
21 :         

SQLSTATE      07002
SQL        SELECT * FROM JUDGES WHERE FNAME = [WITHHELD] AND LNAME = [WITHHELD] AND PASS = [WITHHELD]
VENDORERRORCODE       -3010
DATASOURCE    honors

我已经阅读了许多类似的问题,其中存在一些拼写错误,但我检查并重新检查了拼写,甚至更改了列名和表名并再次尝试。

【问题讨论】:

  • 您的真实代码中的变量是否有引号?即fname = '#form.first#'
  • @Antony:不。虽然我已经尝试过在 FNAME、LNAME 和 PASS 周围加上引号只是为了看看。还是不行。
  • 您是否收到WITHHELD 的所有值的错误 - 表单值中的任何引号或有趣字符?
  • @Antony:再看你的帖子,我看到你只是用了单引号。试过了,它奏效了。一直在用双。谢谢!
  • 太好了——我会写下来作为答案

标签: ms-access coldfusion


【解决方案1】:

确保引用变量:

where FNAME = '#FORM.first#'

此外,你真的应该使用cfqueryparam 来防止SQL injection attacks

where FNAME = &lt;cfqueryparam value="#FORM.first#" cfsqltype="CF_SQL_VARCHAR"&gt;

(注意使用cfqueryparam时不需要引号)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2011-11-20
    相关资源
    最近更新 更多