$hash_ref = $sth->fetchrow_hashref)I am now looking to access each column seperately to search for values. When I use:
if($username eq $hash_ref->{username})
to access this column I keep getting errors. Could anyone suggest what I might be doing wrong?
Your first error is that you don't tell us the error message.
You might want to inspect the data structure you get back:
use Data::Dumper; print Dumper $hash_ref;
In general, it helps very much to give a small, self-contained piece of code that reproduces the error. Even much better if that piece of code needs no external infrastructure like a database or whatnot.
while($hash_ref = $sth->fetchrow_hashref){
#dereference
my %values=%$hash_ref;
#print out usernames
print $values{'username'};}
I can print out all the usernames from the database but do you know how I can match one of these usernames to
$testUsernameI need to print off something like "username matched"
OK..let me get this straight. You're querying a database to get all usernames so you can use Perl to see if a given username is present?
If that's the case -- and this isn't a rather odd homework assignment -- make the database do the work and write the query to see if the username is present. This way Perl would get a true/false answer from the database, and you wouldn't have to check 8,000,000 usernames
In Perl, one way to do it would be to load all the usernames into an array and use grep
$yes = grep { /$username/ } @usernames;
emc
Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.
You didn't provide enough information for anyone to give you any meaningful assistance.
Obviously, check to see if everything is defined and the database request didn't return an error (such as "item not found").
emc
Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.
$sth = $dbh->prepare("select username, password from reg");
$sth->execute;
and then the previous code I have posted to fetch and display it. But I need to print out whether the username i have it $testUsername matches one of the usernames returned from the database
Sorry, I posted before you posted your answer.
emc
Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.
$sth = $dbh->prepare(q{select username, password from reg
where username = ?});
$sth->execute($testUsername);
[doc://grep] applies a test to all the elements of a list and creates a subset of the elements that pass the test. Using it in scalar context return the number of elements which passed the test.
However, if you know the username first, I would suggest making the database do the work and re-writing the query to something like this (note that my SQL skills are quite rusty):
$sth = $dbh -> prepare(q{select username, password from reg where username = $testUsername});
Why return a list to Perl and check the entire list for the existence of username when the database can do exactly that? If you're testing a large number of user names, it may make more sense to query the database for a list, and then check the list for the for existence of all the user names(subject to the caution that the database may have been updated during the processing of the list).
emc
Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.
----------
"Write a wise saying and your name will live forever." - Anonymous
perlmonks.org content © perlmonks.org and Corion, mattdope, Nevtlathiel, swampyankee
prlmnks.org © 2006 edmund von der burg (eccles & toad)
v 0.03