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.