use CGI; use DBI; sub update_mytable($$$$$) { my ($db,$id,$name,$rank,$serialno)=@_; # Use late binding, good practice for some DBs; doesn't hurt others my $sql = "update mytable set name = ?, rank = ?, serialno =? where id= ?"; my $sth; # Wrap db activities in eval so non-fatal eval($sth = $db->prepare($sql) ); eval( $sth->execute($name,$rank,$serialno,$id); ) unless $@; # return $@?$@:1; } my $q = new CGI; my $d = new DBI(....); my $id = $q->param('id'); ... my $serialno = $q->param('serialno'); update_mystable($d,$id,$name,$rank,$serialno);