【发布时间】:2016-12-15 18:28:09
【问题描述】:
我有一个非常基本的 cfquery insert,它在提交时插入我的表单信息 3 次。
有人知道如何阻止这种情况吗?
这是我的表格。
http://jsfiddle.net/DTcHh/27952/
表单发送到的我的页面包含以下cfquery:
<cfquery datasource="OSAnet-College" result="qDonate">
INSERT into V2_OnlineDonations(FNAME,LNAME,PHONE,EMAIL,CAUSE,DATEDONATE)
VALUES (
<cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.FNAME#">
, <cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.LNAME#">
, <cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.PHONE#">
, <cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.EMAIL#">
, <cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.CAUSE#">
, <cfqueryparam cfsqltype="cf_sql_timestamp" value="#NOW()#">
)
</cfquery>
任何帮助将不胜感激。
【问题讨论】:
-
考虑一个 SQL Merge 语句。这样,它将根据需要执行 INSERT 或 UPDATE。见:stackoverflow.com/questions/14806768/…
-
需要查看更多代码,例如正在执行的 cfc 函数以及如何调用该函数。小提琴链接当前会产生一堆错误。
-
我的想法是,您确实无法控制用户将哪些数据放入表单。因此使数据库交互更智能。 MERGE 有一个 INSERT 部分,它将作为普通插入的替代品。
-
我的意思是……如果表单提交3次,就会插入3条记录。您是否想防止重复记录,无论是故意还是重复提交?在您的情况下,由于使用了#now()#,它们可能并不是真正的重复。对 email/first/last 的约束以强制它们是唯一的将防止被欺骗,不是吗?
-
就像@snackboy 说的,你需要展示更多的代码。该查询本身不是问题,因此它必须是调用该查询的任何内容
标签: coldfusion