Hi, Before doing the insert statement run a SELECT query from the table specifying the e-mail address in the WHERE condition.
i.e. use something like: my $sql = "SELECT 1 FROM USERS WHERE e-mail = $email"; my $sth = $dbh->prepare($sql); $sth->execute(); my $val = $sth->fetchrow_array(); if ($val) { # a row was returned therefore e-mail in DB # output error-handling page } else { # no row returned so do insert statement # and write normal page } Hope this helps, Paul On Mon, 20 Jan 2003, Hughes, Andrew wrote: > I am relatively new to this list and perl and DBI as well. The goal is that > before users submit a form submission to the database, I want to make sure > that someone with the same email address has not already submitted it. The > Email field is marked as UNIQUE() in the MySQL database table, so when > someone trys to enter twice, there is an error and the record does not get > entered. However, I would like to display a custom page that nicely > explains that we apprecitate their interest, but they have already been > entered into the database. With this code, I recieve the Carp error in the > browser. When I turn off Carp, the script acts as if the entry was added > (no error displayed), but the record is not entered. Can anyone offer > suggestions on how to make decisions based on a DBI error message ? > > The code that adds people to a MySQL database table using the following > insert statement: > > #! /usr/bin/perl -T -w > # survey.pl > > use strict; > use lib qw(/home/ahughes/myLibrary); > use CGI qw(:standard escape escapeHTML); > use CGI::Carp qw(fatalsToBrowser); > use DBI; > use WebDB; > > .... > > sub insert_data { > > my $dbh = WebDB::connectSurvey (); > my $sth; > > $dbh->do (qq{INSERT INTO nationalConsumerShoppingSurvey SET > participantId = ?, > participantDate = NOW(), > participantFirstName = ?, > participantLastName = ?, > participantPhone = ?, > participantPhoneExtension = ?, > participantDivision = ?, > participantEmail = ? > }, > > undef, > undef, > $participantFirstName, > $participantLastName, > $participantPhone, > $participantPhoneExtension, > $participantDivision, > $participantEmail > ) or surveyErrTrap("Cannot enter record because of duplicate email"); > return my $dbh; > > $dbh->disconnect (); > > } > > sub surveyErrTrap > { > my $error_message = shift(@_); > die "$error_message\n ERROR: $DBI::err ($DBI::errstr)\n"; > }#end: err_trap > > ..... > > ###################################### > > > Thanks, > Andrew >