我正在做以下事情,得到“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;
答案 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});