Ron Goral wrote:
>
> I am trying to hit a MySQL database using DBI::mysql.  I am trying to get
> table information using the SQL - "SHOW TABLE STATUS".
>
> The statement handle prepares and then executes as it should, but when I try
> to get the info via $sth->fetchall_hashref, I get the following error:
>
> =================================================
> DBI fetchall_hashref: invalid number of parameters: handle + 0 Usage:
> $h->fetchall_hashref()
> =================================================
>
> I'm not sure what form the data will be in when this statement is executed,
> but the hashref is a hopeful thing.
>
> Here is the code after a good connection to the database -
>
> =================================================
> eval{$sth = $dbh->prepare("SHOW TABLE STATUS");};
> print qq[Error - $@ <br />] if $@; # No error here
>
> eval{$sth->execute();};
> print qq[Error - $@ <br />] if $@; # No error here
>
> my $ar_TableInfo;
> eval{$ar_TableInfo = $sth->fetchall_hashref;};
> print qq[Error - $@ <br />] if $@; # Error occurs here
>
> print qq[About to iterate the array of hashrefs.....<br />];
> foreach my $hr_TableInfo (@$ar_TableInfo)

You're getting confused here. $ar_TableInfo is a hashref
so you can't dereference it as an array.

>     {
>     foreach my $key (keys %{$hr_TableInfo})
>         {print qq[$key is $hr_TableInfo->{$key}<br />];}
>     }
> =================================================

Hi Ron.

Like it says, you've supplied the wrong number of parameters
to the fetchall_hashref method. You need to pass a single
parameter saying which of the columns you want to use as the
keys of the returned hash. In this case it makes little sense
to use anything but the 'Name' column of the results, so you
could write something like:

  my $hr_TableInfo = $sth->fetchall_hashref('Name');

  foreach my $name (keys %{$hr_TableInfo}) {
    my $rows = $hr_TableInfo->{$name}{Rows};
    my $update_time = $hr_TableInfo->{$name}{Update_time};
  }

depending on what information you need from the results.

HTH,

Rob





-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to