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

时间:2010-09-12 00:20:48

标签: 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;

4 个答案:

答案 0 :(得分: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];

答案 1 :(得分:8)

总是值得检查您遇到问题的功能的文档。

在这种情况下,DBI documentation for "do"说:

  

准备并执行一个   声明。返回行数   受影响或未成功的错误。

而且,更明确地说,

  

它不应该用于SELECT   语句因为它不返回   一个语句句柄(所以你不能获取   任何数据)。

答案 2 :(得分:3)

do返回受影响的行数。您可能希望查看statement类,特别是execute函数。

答案 3 :(得分:1)

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