【发布时间】:2013-08-04 15:38:45
【问题描述】:
我正在尝试获取像 (Select 1 from table) 这样的数据,它返回一行一列的数据。
我不想使用$sth->fetchrow_array 方法将数据检索到数组中。有什么方法可以将数据直接收集到标量变量中?
【问题讨论】:
我正在尝试获取像 (Select 1 from table) 这样的数据,它返回一行一列的数据。
我不想使用$sth->fetchrow_array 方法将数据检索到数组中。有什么方法可以将数据直接收集到标量变量中?
【问题讨论】:
fetchrow_array 返回一个列表——不可能返回一个数组——你可以将它分配给任何list-like,例如my()。
my $sth = $dbh->prepare($stmt);
$sth->execute();
my ($var) = $sth->fetchrow_array()
and $sth->finish();
或者你可以简单地使用
my ($var) = $dbh->selectrow_array($stmt);
【讨论】:
fetchrow_array 和 selectrow_array 的文档暗示它们在标量上下文中调用时将返回第一列或最后一列,因此虽然 my ($var) = ... 中的括号通常很重要,但它应该是可以在这里省略它们。
my ($value) = @{$dbh−>selectcol_arrayref("select 1 from table")}
或更好
my ($value) = $dbh−>selectrow_array($statement);
【讨论】: