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);
}