cfinsert 正在以不同的形式获取我的搜索输入字段

cfinsert is picking up my search input field in a different form

当我提交表单时,我的 cfinsert 函数出现错误,因为没有数据库列名称 "SEARCHFIELD"。问题是 "SEARCHFIELD" 不是我提交的表单中的输入。

两个表单都有关闭和打开标签,所以我不确定为什么在我的主表单提交中引用了我的搜索表单输入?

有什么想法吗?

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

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

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

您可以执行此操作的另一种方法是,您可以添加代码以在 运行 启用 CFINSERT 之前从 FORM 范围中删除 SEARCHFIELD。这会很简单:

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

您可以检查它是否存在,如果存在则将其删除,但 StructDelete() 将 运行 没有问题,即使该字段不存在也是如此。

我个人不使用 CFINSERT/CFUPDATE 而且我知道社区的默认意见是不使用。它们确实有一些好处,但经常被忽视,因为它们确实参数化了 SQL 并至少提供了一些免受恶意人员攻击的安全措施。在对您正在做的事情一无所知的情况下,很难说使用它们实际上是长期 运行 中的一枪还是做的很好。