可能重复:
Coldfusion adding extra quotes when constructing database queries in strings
所有
我试图在插入过程中使用getter引用bean。 CF没有在'form.title'中的值中正确地转义单引号,因此我收到格式错误的SQL错误。
有什么想法吗?
这是代码。
<cfscript>
form.title = "page's are awesome";
page = new model.page.page(argumentCollection = form);
<cfquery name="test" datasource="ksurvey">
insert into page(title)
values('#page.getTitle()#')
</cfquery>
答案 0 :(得分:14)
如果你打算这样做,你需要preserveSingleQuotes()
INSERT INTO page( title )
VALUES ( '#preserveSingleQuotes( page.getTitle() )#' )
当然,插入关于如何使用cfqueryparam以避免SQL注入攻击的标准警告。
INSERT INTO page( title )
VALUES ( <cfqueryparam value="#page.getTitle()#" cfsqltype="cf_sql_varchar" /> )
供参考:
答案 1 :(得分:3)
如果不使用cfqueryparam,我不会在数据库中插入任何值,这不安全!不仅如此,cfqueryparam将为您处理所有逃脱。
<cfquery name="test" datasource="ksurvey">
insert into
page(title)
values(<cfqueryparam value="#page.getTitle()#" cfsqltype="cf_sql_varchar">);
</cfquery>