Try:
foreach my $userID ( sql->fetchrow_array() )
{
#check each user
}
-----Original Message-----
From: Rob [mailto:[EMAIL PROTECTED]
Sent: Thursday, March 27, 2003 3:48 PM
To: [EMAIL PROTECTED]
Subject: Re: db to passwd comparison
What I'm experiencing is that, maybe a 10th of the time it will give me a
name that's in both; most of the time it will appear as if the name isn't
in the database but if I check in by hand the name really is there.
Is this the line thats the problem? $userD = $sql->fetchrow_array();
I've tried it like this but no change ($userD) = $sql->fetchrow_array();
Any ideas on what would work?
--
Rob
Do not meddle in the affairs of wizards,
for they are subtle and quick to anger.
On Thu, 27 Mar 2003, Tim Bunce wrote:
> On Thu, Mar 27, 2003 at 01:53:16PM -0500, [EMAIL PROTECTED] wrote:
> > $sql->fetch_rowarray() returns a LIST. You are capturing the count of
that list.
>
> Actully fetch_rowarray() returns just the first element when
> called in a scalar context.
>
> Perhaps the problem is that the statement returns more than
> one row but only one is being fetched.
>
> Tim.
>
> > -----Original Message-----
> > From: Rob [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, March 27, 2003 1:12 PM
> > To: [EMAIL PROTECTED]
> > Subject: db to passwd comparison
> >
> > Hi, I'm trying to find out which users in a passwd file are not in a
> > database. What I've tried so far(see below) finds a few but misses even
> > more. I'm thinking it might be the way I'm preparing the statement or
> > perhaps executing it? Something else all together? Any help
appreciated.
> >
> > <snip>
> > $sql = $dbh->prepare_cached("SELECT CustNo, UserName FROM call_log WHERE
> > UserName = ?");
> >
> > open(IN, "passwd") || die "Can't open passwd file:$!\n";
> > open(OUT, ">usernames.db") || die "Can't create output file:$!\n";
> > while(<IN>) {
> > chomp;
> > ($userP, $group) = (split /:/)[0,3];
> > $grps{$group}++;
> > $sql->execute($userP)
> > or warn "Can't execute select " . $sql->errstr;
> > $userD = $sql->fetchrow_array();
> > if($userD eq "") {
> > print OUT "UserP:$userP - UserD:$userD\n";
> > }
> > $sql->finish;
> > }
> > close(OUT);
> > close(IN);
> > </snip>
> >
> > Thanks,
> > --
> > Rob
> >
>