给出错误DBD :: mysql :: st fetchrow_array失败:fetch()没有execute()仅用于DELETE语句

时间:2015-04-23 12:08:57

标签: perl dbi

这是db连接,

$DBH = DBI->connect("dbi:mysql:$DATABASE","$USER","$PASS",{ RaiseError => 1, AutoCommit => 1 }) or die "Connection Error: $DBI::errstr\n";

和以下代码,

$sth=$DBH->prepare("DELETE FROM sample where id=1 ") or warn $DBH->errstr;
$sth->execute or die "can't execute the query: $sth->errstr";
while(@row = $sth->fetchrow_array()){
                $count+=$sth->rows;
}

上面的代码给了我错误,

  

DBD :: mysql :: st fetchrow_array失败:fetch()没有execute()..

但是,当我使用select * from sample where id=1时,它会运行。它只给我delete statement的错误。为什么这样? 救命 !感谢名单!

1 个答案:

答案 0 :(得分:1)

您无法使用删除指令执行fetchrow,它仅用于检索数据 你认为它应该回归什么?

来自DBI文档

  

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

您不需要执行fetchrow,只需:

my $affected_row = $sth->execute or die "can't execute the query: $sth->errstr";