cfinsert以不同的形式提取我的搜索输入字段

时间:2015-04-21 10:17:48

标签: forms coldfusion

当我提交表单时,我的cfinsert函数收到错误,因为没有数据库列名“SEARCHFIELD”。问题是“SEARCHFIELD”不是我提交的表单中的输入。

两种表单都有close和open标签,所以我不确定为什么我的主表单提交中会引用我的搜索表单输入?

有什么想法?

1 个答案:

答案 0 :(得分:1)

我可以想到两种方法来避免这种情况,如果没有看到你的实际代码,就很难猜出SEARCHFIELD的来源。正如一些评论指出的那样,很可能是来自CFPARAM或表单中提交按钮的名称。

您可以解决此问题的第一种方法是CFINSERT标记具有名为formfields的属性,您可以在其中列出要插入的列。您可以在此文档链接中看到:

http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7c78.html

另一种方法是在运行CFINSERT之前添加代码以从FORM范围中删除SEARCHFIELD。这将简单如下:

<cfset StructDelete(FORM, "SEARCHFIELD") />

您可以检查它是否存在,如果存在则删除它,但即使该字段不存在,StructDelete()也会毫无问题地运行。

我个人不使用CFINSERT / CFUPDATE,我知道社区中的默认意见不是。它们虽然经常被忽略,但确实有一些好处,因为它们可以对SQL进行参数化,并至少为恶意人提供一些安全保障。在不知道你在做什么的情况下,很难说从长远来看使用它们实际上是你的脚步还是一件好事。