NAME
Mojo::mysql::Results - Results
SYNOPSIS
use Mojo::mysql::Results;
my $results = Mojo::mysql::Results->new(db => $db, sth => $sth);
DESCRIPTION
Mojo::mysql::Results is a container for statement handles used by Mojo::mysql::Database.
ATTRIBUTES
Mojo::mysql::Results implements the following attributes.
db
my $db = $results->db;
$results = $results->db(Mojo::mysql::Database->new);
Mojo::mysql::Database object these results belong to.
sth
my $sth = $results->sth;
$results = $results->sth($sth);
Statement handle results are fetched from.
METHODS
Mojo::mysql::Results inherits all methods from Mojo::Base and implements the following new ones.
array
my $array = $results->array;
Fetch next row from "sth" and return it as an array reference. Note that "finish" needs to be called if you are not fetching all the possible rows.
# Process one row at a time
while (my $next = $results->array) {
say $next->[3];
}
arrays
my $collection = $results->arrays;
Fetch all rows and return them as a Mojo::Collection object containing array references.
# Process all rows at once
say $results->arrays->reduce(sub { $a->[3] + $b->[3] });
columns
my $columns = $results->columns;
Return column names as an array reference.
expand
$results = $results->expand;
$results = $results->expand(1)
Decode json
fields automatically to Perl values for all rows. Passing in "1" as an argument will force expanding all columns that looks like a JSON array or object.
# Expand JSON
$results->expand->hashes->map(sub { $_->{foo}{bar} })->join("\n")->say;
Note that this method is EXPERIMENTAL.
See also https://dev.mysql.com/doc/refman/8.0/en/json.html for more details on how to work with JSON in MySQL.
finish
$results->finish;
Indicate that you are finished with "sth" and will not be fetching all the remaining rows.
hash
my $hash = $results->hash;
Fetch next row from "sth" and return it as a hash reference. Note that "finish" needs to be called if you are not fetching all the possible rows.
# Process one row at a time
while (my $next = $results->hash) {
say $next->{money};
}
hashes
my $collection = $results->hashes;
Fetch all rows and return them as a Mojo::Collection object containing hash references.
# Process all rows at once
say $results->hashes->reduce(sub { $a->{money} + $b->{money} });
new
my $results = Mojo::mysql::Results->new(db => $db, sth => $sth);
my $results = Mojo::mysql::Results->new({db => $db, sth => $sth});
Construct a new Mojo::mysql::Results object.
rows
my $num = $results->rows;
Number of rows.
text
my $text = $results->text;
Fetch all rows and turn them into a table with "tablify" in Mojo::Util.
more_results
do {
my $columns = $results->columns;
my $arrays = $results->arrays;
} while ($results->more_results);
Handle multiple results.
affected_rows
my $affected = $results->affected_rows;
Number of affected rows by the query. The number reported is dependant from mysql_client_found_rows
or mariadb_client_found_rows
option in Mojo::mysql. For example
UPDATE $table SET id = 1 WHERE id = 1
would return 1 if mysql_client_found_rows
or mariadb_client_found_rows is set, and 0 otherwise.
last_insert_id
my $last_id = $results->last_insert_id;
That value of AUTO_INCREMENT
column if executed query was INSERT
in a table with AUTO_INCREMENT
column.
warnings_count
my $warnings = $results->warnings_count;
Number of warnings raised by the executed query.
err
my $err = $results->err;
Error code receieved.
state
my $state = $results->state;
Error state receieved.
errstr
my $errstr = $results->errstr;
Error message receieved.