Perl 参数 "user" 在数组元素中不是数字

Perl argument "user" isn't numeric in array element

我总是收到消息说我在数组中的参数不是数字。 它在这段小代码中发生了 5 次:

    my $mcnamequery = "SELECT mcID FROM tblMCName WHERE mcName = '".$mcname."'";
$mcid = dbSelect($mcnamequery);
print $mcid->{mcID} . "\n";

my $userfsquery = "SELECT userFS FROM tblMcSubs WHERE mcFS = '".$mcid->{mcID}."'";  
my $execute = $dbh->prepare($userfsquery);
$execute->execute();

while (@usersfs = $execute->fetchrow_array()) {
    print $usersfs['userFS'] . "\n";

    my $mailquery = "SELECT useremail FROM tblUser WHERE userID = '".$usersfs['userFS']."'";
    $execute2 = $dbh->prepare($mailquery);
    $execute2->execute();
    while (@mails = $execute2->fetchrow_array()) {
        $counter++;
        print $mails['useremail']. "\n";
        if($counter == 1){
                $addresses = $mails['useremail'];
        }else{
            $addresses = $addresses. " " . $mails['useremail'];
        }   
    }   
}

第一次发生在这一行:print $usersfs['userFS'] . "\n"; 之后,我在任何想使用 $usersfs['userFS']$mails['useremail']

的地方都会收到此消息

错误信息: 在 /tem/obm/morningcheck/jantool.pl 第 520 行的数组元素中,参数 "userFS" 不是数字。 在 /tem/obm/morningcheck/jantool.pl 第 522 行的数组元素中,参数 "userFS" 不是数字。 在 /tem/obm/morningcheck/jantool.pl 第 527 行的数组元素中,参数 "useremail" 不是数字。 在 /tem/obm/morningcheck/jantool.pl 第 529 行的数组元素中,参数 "useremail" 不是数字。 参数 "useremail" 在 /tem/obm/morningcheck/jantool.pl 行 531.

的数组元素中不是数字

希望你能帮助我,谢谢!

print $mails['useremail']. "\n";

这是你的问题。 [] 表示一个数组索引,指向一个名为 @mails 的数组。所以字符串 arg 永远不会 有效。

也许你的意思是:

print $mails{'useremail'}."\n";

这是一个名为 %mails 的散列的关键参数。

但是当您获取一个名为 @mails 的数组时...您必须找出索引,或者以其他方式建立一些键值关联。

鉴于您的两个查询都获取了一个列,那么您可以简单地访问:

$mails[0] 

$usersfs[0]

在 Perl 中,数组使用数字索引。 'userFS' 不是数字,因此出现错误。

如果要使用哈希表(也称为关联数组),则必须在键周围使用花括号:

my %usersfs;
$usersfs{userFS} = "whatever";