DBI does not do what I expect...

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View

I am working with a CGI to inspect a database, and I want to include a
count of records in each table in the display. I have two screens
available in the UI: one to list the tables in the d/b, and the other to
show the records in each table. I want to provide a preview of how big
each table is in the table listing, so the code preparing the table list
is doing this:

my $ary_ref = $dbh->selectcol_arrayref ( "SHOW TABLES FROM $db_name" );
# Construct a bullet list using the ul() and li functions. Each item
# is a hyperlink that re-invokes the script to display a particular
my @item;
foreach my $tbl_name (@) {
    my $url = sprintf ("%s?tbl_name=%s", url(), escape($tbl_name));
   my $link = a ({-href => $url}, escapeHTML($tbl_name));
   my $sth = $dbh->prepare ( qq (
            SELECT COUNT(*) FROM $tbl_name ) );
   my $rv = $sth->execute();
   my $rows = $sth->rows;
   push (@item, li ($link . " $rows in table" ) );
print ul (@item);

But when I execute the SQL, I only get "1" returned for each "$rows",
rather than what I expect, the number of rows.

Why is this not working for me?


Re: DBI does not do what I expect...

Mark Jaffe wrote:
Quoted text here. Click to load it

"SELECT COUNT(*) ..." returns one row, which is the number
of counted rows.

Dipl.-Inform. Frank Seitz; http://www.fseitz.de /
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: DBI does not do what I expect...

Quoted text here. Click to load it

Exactly.  So, not to put too fine a point on it what Mark wanted to do
was something like:

"SELECT COUNT(*) Cnt..."
 my $srcHref = $sth->fetchrow_hashref();
print $srcHref->;


Site Timeline