LetterThirteen
LetterThirteen

Reputation: 320

How to stop my coldfusion Cfquery from insertering duplicate rows?

I have a very basic cfquery insert that is inserting my form information 3 times on submit.

Anyone know how to stop this?

Here is my form.

http://jsfiddle.net/DTcHh/27952/

And my page that the form is sent to contains the following 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>

Any help would be appreciated.

Upvotes: 0

Views: 544

Answers (1)

Xavier L.
Xavier L.

Reputation: 367

try something like this:

<cfquery datasource="OSAnet-College" result="qDonate">
IF 
(
    NOT EXISTS
    (
        SELECT * FROM V2_OnlineDonations 
        WHERE FNAME = <cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.FNAME#">
        AND LNAME = <cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.LNAME#">
        AND PHONE = <cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.PHONE#">
        AND EMAIL = <cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.EMAIL#">
        AND CAUSE = <cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.CAUSE#">
    ) 
)
BEGIN 
    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()#">
    )
END
</cfquery>

Upvotes: 1

Related Questions