如何从Perl的DBI中获取MySQL查询的结果?

San*_*ing 3 mysql perl dbi

我正在做以下事情,得到"1"我认为这意味着声明很好.但我想取而代之的是结果.

怎么了?

#!/usr/bin/perl

use strict;
use DBI;

my $host = "test";
my $database = "dd";
my $port = 3306;
my $user = "uuu";
my $pw = "ppp";

my $mysql = DBI->connect("DBI:mysql:database=$database;host=$host;port=$port", $user, $pw)
    or die "Cannot connect to MySQL server\n";

my $m = $mysql->do(qq{select MAX(idvisit) from log_visit});

print $m;
Run Code Online (Sandbox Code Playgroud)

San*_*ing 8

my $m = $mysql->prepare("select MAX(idvisit) from log_visit");
$m->execute() or die "Couldn't execute statement: ".$m->errstr;
print $m->fetch()->[0];
Run Code Online (Sandbox Code Playgroud)


Dav*_*oss 8

对于您遇到问题的功能,总是值得查看文档.

在这种情况下,"do"DBI文档说:

准备并执行单个陈述.返回受影响的行数或出错时的undef.

并且,更明确地说,

它不应该用于SELECT语句,因为它不返回语句句柄(因此您无法获取任何数据).

  • +1; 任何正在进行数据库工作的人都需要阅读[*完整*DBI文档](http://perldoc.perl.org/DBI.html)(`perldoc DBI`),以便他们知道存在哪些设施. (3认同)