我已经为此苦苦挣扎了 16 个小时,我已经束手无策了。我已阅读所有联机帮助页,尝试制作自己的联机帮助页,尝试了几个示例并修改了许多无济于事。
我想要做的就是从我的数据库中获取一些行,并能够单独访问每一行变量(列数据)。
#!/usr/bin/perl -w
use strict;
use CGI;
use CGI ':standard';
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
print CGI::header(-expires => '-1d');
use DBI;
$|=1;
use vars qw($getstate $hookup $query $results $city $state $pages $category $lastupdate $progress $actual $city1 $state1 $pages1 $category1 $lastupdate1 $progress1 $actual1);
$getstate = 'Arizona'; ## actually comes in from a query
##$hookup is returned from a sub with database credentials
$query = $hookup->prepare(qq{SELECT `city`,`state`,`pages`,`category`,`lastupdate`,`progress`,`actual` FROM `statesettings` WHERE `pages` > `progress` AND `state` LIKE ? ORDER BY `lastupdate` ASC LIMIT 2});
$query->bind_param(1, "%$getstate%");
$query->execute() or die "Query did not execute";
## I HAVE TRIED all kinds of ways to fetch data! fetchall_arrayref() fetchrow_array() and dozens upon dozens of attempts.
while ($results = $query->fetchrow_hashref) {
$city = $results->{city};
$pages = $results->{pages};
$category = $results->{category};
$lastupdate = $results->{lastupdate};
$progress = $results->{progress};
$actual = $results->{actual};
#####################
}## end WHILE
$query->finish;
$hookup->disconnect;
在上面的示例中,我只能弄清楚如何访问一行。
但我想要类似的东西:(显然设置了我要求的行数)
$city = $arr[0]['city']; #city from row 0
$city1 = $arr[1]['city']; #city from row 1
或者任何允许我单独获取每一行列数据以供进一步使用的东西!
我实际上成功地编写了一大段代码,该代码将所有数据推送到一个数组中,并用“:”分隔行,然后我稍后拆分这些行然后循环每一行。可能是一个很好的例子,说明如何使用最可能的代码获得我的结果。我知道我想做的是“内置”,但我就是不具备脑力。 我感觉完全脑死亡,因为经过这么多小时我无法弄清楚这一点。 太近了可能看不见?
我想要一些解释以及任何示例代码,以便我可以学习/理解其机制。非常感谢您的指导...
最佳答案
你可以这样写:
my @arr;
while ($results = $query->fetchrow_hashref)
{
push @arr, $results;
}
$query->finish;
$hookup->disconnect;
然后执行您想要的任何其他任务:
my $city = $arr[0]->{'city'}; # city from first row
my $city1 = $arr[1]->{'city'}; # city from second row
或:
my @all_cities = map { $_->{'city'} } @arr;
my $city = $all_cities[0]; # city from first row
my $city1 = $all_cities[1]; # city from second row
关于mysql - 如何将两行(或更多行)放入单独的数组中,以提供对每一行列的单独访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13087939/