【发布时间】:2012-03-26 13:37:55
【问题描述】:
在对 MySQL 进行 cfquery 时,MYSQL 在以下代码的“字段列表”中给出错误“未知列”“问题”:
<cfquery name="qUpdateTheQuestion" datasource="testmaster">
INSERT INTO ETrueFalseQuestions
VALUES (<cfoutput>#newTypeID#</cfoutput>, `<cfoutput>#FORM.Question#</cfoutput>`, <cfoutput>#FORM.truefalse#</cfoutput>
我已经尝试了我能想到的所有方法来尝试解决这个问题,以及我在尝试搜索解决方案时发现的一些建议,例如使用反引号而不是单引号。
我也不明白为什么它要搜索名为 Question 的列,因为那是 FORM.Question 的值,并且会根据输入到表单中的内容而变化。任何建议将不胜感激。
【问题讨论】:
-
请将您的变量包装在
cfqueryparam:<cfqueryparam value="#newTypeID#" cfsqltype="CF_SQL_INT" />,<cfqueryparam value="#FORM.question#" cfsqltype="CF_SQL_VARCHAR" />,<cfqueryparam value="#FORM.truefalse#" cfsqltype="CF_SQL_BIT" /> -
回复:为什么要搜索名为 Question 的列
FORM.Question包含一个字符串。文字字符串必须用单引号括起来(或用 cfqueryparam 包裹),否则您的数据库会假定它是对象名称,即列或表名称。此外,您永远不需要在 cfquery 中使用cfoutput标记。 -
使用了 cfqueryparam,但与仅使用变量相比,这样做有什么优势吗?
-
cfqueryparam具有以下优势:防止 SQL 注入攻击和使用允许数据库重新使用已编译查询的绑定变量,从而提高性能。 -
您使用的
<cfoutput>s 在cfquery标记中也是不必要的。
标签: mysql coldfusion cfquery