Mojolicious数据库操作(十三)

一、finish

$results->finish;

该方法表示数据行已经查询结束,不会再有新的行数据了。

二、hash

my $hash = $results->hash;

该方法与array方法类似。但是,该方法返回的是散列引用,其键是字段、也就是列的名称,值是查询到的数据。当查询的数据有多行时,需要while循环进行遍历:

while (my $next = $results->hash) {
  say $next->{money};
}

三、hashes

my $collection = $results->hashes;

该方法与arrays类似。注意该方法返回的是一个散列数组的引用——行数据的散列组成的数组。

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});

创建Mojo::mysql::Results对象。

五、rows

my $num = $results->rows;

返回查询结果中一共有多少行数据。

六、text

my $text = $results->text;

将所有查询到的数据行,按照表格的排布方式打印出来,此方法调用的mojo::util模块的tablify方法。

七、more_results

do {
  my $columns = $results->columns;
  my $arrays = $results->arrays;
} while ($results->more_results);

处理多个results对象。

八、affected_rows

my $affected = $results->affected_rows;

请大家回忆或者去mysql数据库中实际操作一下,当我们执行一条语句,尤其是insert、update语句时,会有两行返回信息,其中说明了有多少行数据被我们改变了。

而该方法便是将此返回信息传递到Perl程序中。例如我们执行下列语句:

UPDATE $table SET id = 1 WHERE id = 1

如果生效将返回1,即有一行数据操作生效。

九、last_insert_id

my $last_id = $results->last_insert_id;

如果我们的表中id字段设置为自增的,那么此方法会返回最后插入的一行数据的id。

十、warnings_count

my $warnings = $results->warnings_count;

返回查询造成的警告的数量

十一、err

my $err = $results->err;

返回接收到的错误代码

十二、state

my $state = $results->state;

返回错误状态

十三、errstr

my $errstr = $results->errstr;

返回错误消息

标签