> Hello,
>
> i'm trying to make a class to do select/insert/delete/update on a
MySQL table (via DBI).
> this is a snip of code:
>
You haven't really shown us a class, just a method...
> sub query{
> my $self = shift;
> my($sql) = @_;
> my @result;
Why scope @result here?
> my $sth = $self->{dbh}->prepare($sql) or return undef;
Always returning undef on an error is kind of blinding, I like to know
where things are getting messed up.
> if($sql =~ /delete|insert/gi){
What happens if 'delete' or 'insert' are in the query string? as say
part of a text block?
> $sth->execute() or return undef;
> my $rows = $sth->rows;
> ($rows == 0) ? "0E0" : $rows;
> } else {
> $sth->execute() or return undef;
> my @row;
> while(@row = $sth->fetchrow_array){
> foreach my $i (0..$#row){
> push(@result,$row[$i]);
> }
I most often prefer to use a hash reference so that I can index into my
result set using field names rather than indexes. Using this method
there is no way to access the results via name, which means I have to
update my code every time a field is added *especially* when it is not
added on the end of a table.
> }
> $sth->finish();
> return @result;
> }
> }
>
> I like to receive an opnion or someone to indicate me something similars.
>
You might want to look into the Class::DBI module from CPAN.
http://danconia.org
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>