这是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
的错误。为什么这样?
救命 !感谢名单!
答案 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";