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;
返回错误消息