gpt4 book ai didi

arrays - Perl selectall_array - 从数组 ref 的数组中检索所有数据

转载 作者:行者123 更新时间:2023-12-02 15:03:46 25 4
gpt4 key购买 nike

我正在使用 DBI selectall_array 从 mysql 中获取所有数据。我的查询为每一行返回 1 列。但是 selectall_array 函数为每一行返回一个数组 ref,如下所示

$VAR1 = [
'1.ptmp'
];
$VAR2 = [
'e1.ptmp'
];
$VAR3 = [
's2.ptmp'
];
$VAR4 = [
'sw1.ptmp'
];
$VAR5 = [
'w1.ptmp'
];

我想要的是一种将所有域提取到单个数组(无引用)中的方法,或者是否有一个 DBI 函数可以返回完整的数据数组而没有任何引用?我不想遍历所有数据或在 while 循环中执行 fetchrow_array。如果可能,是否正在寻找一条语句来完成所有操作?

请看下面我的代码:

my @mysqldata = $dbh->selectall_array('SELECT `domain` FROM dfs WHERE `id` IN ('.join(',',('?')x(scalar(@params))).')', {}, @params);
my @minus = array_minus( @all, @mysqldata );

最佳答案

由于您只提取一列,因此您可以尝试使用 selectcol_arrayref() 方法 - 取消引用内联数组。

my @mysqldata = @{ $dbh->selectcol_arrayref('SELECT `domain` FROM dfs WHERE `id` IN ('.join(',',('?')x(scalar(@params))).')', {}, @params) };

更新

正如 ysth 在评论中所建议的那样,您可以在较新版本的 Perl(v5.20.0 及更高版本)中使用后缀运算符来取消引用 selectcol_arrayref() 返回的值 - 如下所示。

$dbh->selectcol_arrayref('SELECT domain FROM dfs', undef, @params)->@*;

关于arrays - Perl selectall_array - 从数组 ref 的数组中检索所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48006433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com