http://qs321.pair.com?node_id=273253

devslashneil has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks,
I have written a subroutine to test if a user is in the database or not. It returns 1 if the user is in the database and 0 if the user is not in the database.
Here is the code i have written:
sub member_exists { my ($email,$mid) = @_; chomp ($email,$mid); my $db = "nMail"; my $sock = "/tmp/mysql.sock"; my $user = ""; my $pass = ''; my $dsn = "DBI:mysql:$db;mysql_socket=$sock"; my $mid = (); my $dbh = DBI->connect($dsn,$user,$pass); my $sth = $dbh->prepare("SELECT S_Email,MID FROM ML_Subscribers"); $sth->execute() || die "Error: Could not get mailing list data\n"; while (my @row = $sth->fetchrow_array) { if($row[0] eq $email and $row[1] == $mid){ return 1; } } $sth->finish(); $dbh->disconnect(); return 0; }
However this will always return 0 for all cases. When i remove  and $row[1] == $mid it works fine, but i need the $email and $mid to be the same. I've tried changing "==" to "eq" but that doesn't work either.

I have also tried the sql statement:  SELECT S_Email,MID FROM ML_Subscribers WHERE MID = '$mid' AND  S_Email = '$email' and then tested if  $row[0] is true.
None of these things worked so i am pretty stuck for ideas.
I'm sure it has to be something stupid i am over looking, i would appreciate any input.
Cheers

Neil Archibald
- /dev/IT -