我正在研究 Perl 的 DBI,我看到了以下方法:
selectrow_array
selectrow_arrayref
selectrow_hashref
所有这些都从结果集中返回 1 行。所以我不明白它们的用处是什么。他们是做 a 的某种替代品LIMIT 1
吗?
问问题
2140 次
2 回答
10
有很多例子是有用的,只得到一行,这些函数简化了搜索过程。例如,要获取结果集的计数
my $sql = "select count(*) from people where age>?";
my ($count) = $dbh->selectrow_array($sql, undef, 42);
替代方案需要:准备、绑定和执行、获取和完成。
于 2013-08-11T18:26:31.093 回答
4
是的,当您只需要选择 1 行时,它只是使程序更小的语法糖。正如手册所说:
selectrow_hashref - 这个实用方法结合了“prepare”、“execute”和“fetchrow_hashref”
所以,不要写,说:
$sql = qq{
SELECT
project.domain,
project.pages_to_save,
project.pages_to_check,
IFNULL(project.no_exact_result, 0) AS no_exact_result
FROM
project
WHERE
project.id=?
};
my $sth = $dbh->prepare($sql);
$sth->execute($project_id);
my $values_ref = $sth->fetchrow_hashref();
$sth->finish();
你可以写:
$sql = qq{
SELECT
project.domain,
project.pages_to_save,
project.pages_to_check,
IFNULL(project.no_exact_result, 0) AS no_exact_result
FROM
project
WHERE
project.id=?
};
my $values_ref = $sth->selectrow_hashref($sql, undef, $project_id);
于 2013-08-11T18:25:13.313 回答