DBD::mysql fetchrow_数组失败:fetch()不带execute()?

DBD::mysql fetchrow_数组失败:fetch()不带execute()?,mysql,windows,perl,apache,cgi,Mysql,Windows,Perl,Apache,Cgi,我得到以下代码的错误: #!C:/usr/bin/perl -w use CGI; use strict; use DBI(); use CGI::Carp qw(fatalsToBrowser); print "content-type: text/html; charset=iso-8859-1\n\n"; my $q=new CGI; my $ename=$q->param('ename'); my $email=$q->param('email'); print $

我得到以下代码的错误:

#!C:/usr/bin/perl -w

use CGI;
use strict;
use DBI();
use CGI::Carp qw(fatalsToBrowser);


print "content-type: text/html; charset=iso-8859-1\n\n";

my $q=new CGI;
my $ename=$q->param('ename');
my $email=$q->param('email');

print $q->header;
print "<br>$ename<br>";


#connect to database.
my $dbh = DBI->connect("DBI:mysql:database=test;host=localhost","root","mukesh",
          {'RaiseError' => 1});

eval {$dbh->do("CREATE TABLE IF NOT EXISTS emp (ename VARCHAR(20), email VARCHAR(50))")};
print "<br>creating table emp failed: $@<br>" if $@;


my $sql="INSERT INTO emp(ename,email) values('$ename','$email')";

my $sth = $dbh->prepare($sql) or die "Can't prepare $sql:$dbh->errstrn";
#pass sql query to database handle


my $rv = $sth->execute() or die "can't execute the query: $sth->errstrn";

my @row;
while (@row = $sth->fetchrow_array) {
print join(", ",@row);
}

$sth->finish();
$dbh->disconnect();

if ($rv==1){
print "<br>Record has been successfully updated !!!<br>";
}else{
print "<br>Error!!while inserting record<br>";
exit;
}

您正在尝试使用DBI中的公共
SELECT
循环-prepare、execute、fetch-进行
非SELECT
查询(
INSERT
)。您可能应该做的是直接检查
execute
的结果。引述:

对于非SELECT语句,
execute
返回行数 受影响,如果知道的话。如果没有行受到影响,则执行返回 “0E0”,Perl将其视为0,但将其视为true。注意 语句不影响任何行不是错误。如果 受影响的行数未知,然后执行返回-1


您正在尝试使用DBI中的公共
SELECT
循环-prepare、execute、fetch-进行
非SELECT
查询(
INSERT
)。您可能应该做的是直接检查
execute
的结果。引述:

对于非SELECT语句,
execute
返回行数 受影响,如果知道的话。如果没有行受到影响,则执行返回 “0E0”,Perl将其视为0,但将其视为true。注意 语句不影响任何行不是错误。如果 受影响的行数未知,然后执行返回-1

my @row;
while (@row = $sth->fetchrow_array) {
print join(", ",@row);
}