Ok, sorry, I just found out I can also use fetchrow_array()...

----- Original Message -----
From: "Filip Sneppe" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, December 28, 2001 8:59 PM
Subject: DBI fetchrow_hashref(), pointers & references


> Hi,
>
> I use perl to access a MySQL database, and I have to make a lot of fairly
> easy
> queries, like these:
>
> "select sourceip, sum(bytes) as sumbytes from traffic"
> "select destip, sum(bytes) as sumbytes from traffic"
> ....
>
> and then put the numbers in an html table.
>
> The code that retrieves the data from MySQL looks like this:
>
> $sth = $dbh->prepare("select sourceip, sum(bytes) as sumbytes from
> traffic");
> $sth->execute();
>
> while ($ref = $sth->fetchrow_hashref())
>   {
>   $html .=
> "<tr><td>$ref->{'sourceip'}</td><td>$ref->{'sumbytes'}</td></tr>\n";
>   }
>
> Is there any way to avoid having to use constructs like $ref->{'sourceip'}
> and $ref->{'sumbytes'}, and instead use a generic approach to get an
element
> from the first, second, etc. column ?
>
> The reason I'm asking this, is that, since I have to execute a lot of
> queries
> that are very similar in nature, yet use different columns from the
> database,
> I want to write a more generic subroutine that handles the creation of an
> html
> table, something like this:
>
> sub create_html_table
>   {
>   my @sub_columntitles = ();
>   my $sub_dbh          = shift; # database handle
>   my $sub_query        = shift; # query string
>   push @sub_columntitles, @_;   # titles of columns, same as table names
in
> database
>
>   $sub_sth = $sub_dbh->prepare($sub_query);
>   $sub_sth->execute();
>
>   $sub_html = "<table border=1><tr>\n";
>   for($i=0; $i < @sub_columntitles; ++$i)
>     {
>     $sub_html .= "<td>$sub_columntitles[$i]</td>";
>     }
>   $sub_html .= "</tr>\n";
>
>   while ($sub_ref = $sub_sth->fetchrow_hashref())
>     {
>     $sub_html .= "<tr>";
>
>     for ($i=0; $i < @sub_columntitles; ++$i)
>       {
> #                      Here's where I'm stuck !
> #                               |
> #                               V
>       $sub_html .= "<td>$ref->????????????</td>";
>       }
>     $sub_html .= "</tr>\n";
>     };
>   $sub_sth->finish();
>
>   $sub_html .= "</table>\n\n"
>
>   return $sub_html;
>   }
>
>
> Thanks in advance,
> Filip
>
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to