2010-09-12 41 views
3

我正在做以下事情,并且得到我认为“1”意味着声明很好。但我想取而代之的结果。如何从Perl的DBI获取MySQL查询的结果?

怎么了?

#!/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; 

回答

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

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

+0

据我通过包do'改变''给我execute'得到'无法找到对象的方法 “执行” “DBI :: DB”'。 – 2010-09-12 00:31:17

+0

我的意思是讲课。你用过的一样。 – Femaref 2010-09-12 00:55:47

8
​​
8

总是值得检查你遇到问题的函数的文档。

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

准备和执行单一 声明。返回行数 受影响或发生错误时为undef。

而且,更明确地说,

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

+3

+1;任何做DB工作的人都需要阅读[* DBI的全文文档](http://perldoc.perl.org/DBI.html)('perldoc DBI'),以便他们知道存在哪些设施。 – Ether 2010-09-12 16:39:21

相关问题