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

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

Ok Perl Monks, I really could use your wisdom here :o)

I've created a site in perl and MySQL. when my visitors register, I have it check a database table of obscene usernames and return "bad" if it's in there.

Here is how I am searching it:

$sth = $dbh->prepare (qq{ SELECT * FROM `forbidden_usernames` WHER +E `f_user` LIKE ? }); $sth->execute("$str"); $row = $sth->fetchrow_hashref(); $sth->finish(); if ($str =~ /$row->{f_user}/i) { return("bad"); }


Ok, now my problem is that if I even try to use my name as a username it is returning it as bad.

I did have a wildcard in the $sth->execute("$str"); like this: $sth->execute("%$str%");

I thought that might have been the problem, but it was not. when I took out the wild cards on both sides of it, It is still saying any username is bad.

However, if I just take out the LIKE and make it a = then it won't get something like asshole when I only have ass in the database and visaversa. Is there a "contains" like Perl's =~ for MySQL, that you know of in your infinite wisdom?

Or should I go ask on a MySQL board, if I can find one?

thx,
Richard