in reply to Mysql Issues (newb)

use strict; use DBI; my $dsn = "DBI:mysql:database=numbers;host=localhost"; my $dbh = DBI->connect($dsn, 'user', 'password'); ## Instead of using '*', use the column names. That way, if ever you A +LTER the table this will still work. my $sth = $dbh->prepare("SELECT name, phone1, phone2 FROM numbers"); $sth->execute(); $sth->bind_columns(\my($name,$phone1,$phone2)); while ($sth->fetch()) { print "The name field $name\n"; print "The phone1 field $phone1\n"; print "The phone2 field $phone2\n"; }

Replies are listed 'Best First'.
Re^2: Mysql Issues (newb)
by r34d0nl1 (Pilgrim) on Dec 17, 2004 at 02:13 UTC
    Generally the hash structure provides a more effective way to deal with the retrieved data.
    I'm still learning the basic of PERL, but I've been using hashes
    to deal the data retrieved from the database.
    So it would be interesting to use hashes instead of arrays. I really don't know if in your case the use of arrays is mandatory.
    but you could do, for example creating a hash like in:
    my %rpt = ( ) ;
    Then, building the hash with the information in the fields:
    while (my @row = $sthNames->fetchrow_array ()) { my $P = \%{$rpt{NAME}{$row[0]}}; $P->{PHONE1} = $row[1]; $P->{PHONE2} = $row[2]; }

    And then, when going to use the information, just use the hash you created, like this:
    ... foreach my $name (keys %{$rpt{NAME}}) { my $P = \%{$rpt{NAME}{$name}}; $html .= qq { <TR> <TD>$name</TD> <TD>$p->{PHONE1}</TD> <TD>$P->{PHONE2}</TD> </TR> }; }