我总是得到消息,我在数组中的参数不是nummeric。 它在这个小代码中发生了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']
错误消息: 参数“userFS”在/tem/obm/morningcheck/jantool.pl第520行的数组元素中不是数字。 参数“userFS”在/tem/obm/morningcheck/jantool.pl第522行的数组元素中不是数字。 参数“useremail”在/tem/obm/morningcheck/jantool.pl第527行的数组元素中不是数字。 参数“useremail”在/tem/obm/morningcheck/jantool.pl第529行的数组元素中不是数字。 参数“useremail”在/tem/obm/morningcheck/jantool.pl第531行的数组元素中不是数字。
希望你能帮助我,谢谢!
答案 0 :(得分:6)
print $mails['useremail']. "\n";
这是你的问题。 []
表示一个名为@mails
的数组的数组索引。所以字符串arg 永远不会有效。
也许你的意思是:
print $mails{'useremail'}."\n";
这是名为%mails
的哈希的关键参数。
但是,当您获取一个名为@mails
的数组时......您要么弄清楚索引,要么进行一些键值关联。
鉴于您的查询都会获取单个列,您只需访问:
$mails[0]
和
$usersfs[0]
答案 1 :(得分:2)
在Perl中,数组使用数字索引。 'userFS'
不是数字,因此是错误。
如果要使用哈希表(也称为关联数组),则必须在键周围使用大括号:
my %usersfs;
$usersfs{userFS} = "whatever";