我创建了一个 Perl 脚本,该脚本旨在遍历一个数组(满足特定条件的客户的候选名单),使用 system() 执行一个外部命令,然后在操作完成后更新每行中的一个字段。
它适用于第一条记录(即执行外部命令,客户记录更新),但是当它到达第二条记录时,我收到此错误:
DBD::mysql::st fetchrow_array 失败:在 customer_update.pl 上 fetch() 没有 execute()
通过一些谷歌搜索,我添加了 $sth->finish(); 命令,但是无论我是否包含它(如图所示在循环内部或之后),我仍然会收到相同的错误。
任何人都可以为我阐明我在这里做错了什么吗?
这是一个摘录:
# PERL MYSQL CONNECT()
$dbh = DBI->connect('dbi:mysql:signups', $user, $pw)
or die "Connection Error: $DBI::errstr\n";
# DEFINE A MySQL QUERY
$myquery = "SELECT * FROM accounts WHERE field3 = false";
$sth = $dbh->prepare($myquery);
# EXECUTE THE QUERY
$sth->execute
or die "SQL Error: $DBI::errstr\n";
@records = $sth->rows;
print "Amount of new customers: @records\n\n";
while ( my ($field1, $field2, $field3) = $sth->fetchrow_array() ) {
#execute external command via system();
$update_customer_status = "UPDATE accounts SET field3=true WHERE id=$id";
$sth = $dbh->prepare($update_customer_status);
$sth->execute
or die "SQL Error: $DBI::errstr\n";
print "Customer record modified & MySQL updated accordingly\n\n";
$sth->finish();
}