Chas. Owens wrote:
On Fri, Feb 27, 2009 at 08:43, David Shere <dsh...@steelerubber.com> wrote:
The following sub uses "fetchall_arrayref" in the DBI module to put the
results of an SQL command into an array, where each element of the array
is a hash of that records name/value pairs. The documentation says to
pass it a reference to a hash. My interpretation of that requirement is
below. Did I miss something?
sub SQLCom { # Issues a command to the MySQL database.
my $dbh = shift; # Database object (from DBI)
my $CommandString = shift; # SQL Command
my $Query = $dbh->prepare($CommandString);
$Query->execute() or (print "Can't execute database command
\"$CommandString\"\n\n" and return undef);
if ($CommandString =~ m/SELECT/i) {
my @return = @{$Query->fetchall_arrayref(\%asfd)};
return @return;
}
return "true";
}
Where does %asdf come from? Anyway, there are four ways to call
fetchall_arrayref.
You can call it with an empty arrayref or not arguments at all:
my $AoA = $sth->fetchall_arrayref([]);
my $AoA = $sth->fetchall_arrayref();
$AoA contains a reference to an array of arrays, so, if the data in
the data base looked like this:
foo|bar|baz
1|2|3
4|5|6
7|8|9
then the $AoA would look like this
my $AoA = [
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ],
];
You can call it with an empty hashref:
my $AoH = $sth->fetchall_arrayref({});
$AoH contains a reference to an array of hashes, so, if the data in
the data base looked like this:
foo|bar|baz
1|2|3
4|5|6
7|8|9
then the $AoH would look like this
my $AoH = [
[ foo => 1, bar => 2, baz => 3 ],
[ foo => 4, bar => 5, baz => 6 ],
[ foo => 7, bar => 8, baz => 9 ],
];
ITYM:
my $AoH = [
{ foo => 1, bar => 2, baz => 3 },
{ foo => 4, bar => 5, baz => 6 },
{ foo => 7, bar => 8, baz => 9 },
];
You can call it with a hashref of the names columns:
my $AoH = $sth->fetchall_arrayref({foo => 1, baz => 1});
$AoH contains a reference to an array of hashes, so, if the data in
the data base looked like this:
foo|bar|baz
1|2|3
4|5|6
7|8|9
then the $AoH would look like this
my $AoH = [
[ foo => 1, baz => 3 ],
[ foo => 4, baz => 6 ],
[ foo => 7, baz => 9 ],
];
ITYM:
my $AoH = [
{ foo => 1, baz => 3 },
{ foo => 4, baz => 6 },
{ foo => 7, baz => 9 },
];
John
--
Those people who think they know everything are a great
annoyance to those of us who do. -- Isaac Asimov
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/