Article View: pl.comp.lang.perl
Article #52184perl - wyciąganie danych z bazy
From: MaRc
Date: Thu, 10 Mar 2011 20:35
Date: Thu, 10 Mar 2011 20:35
101 lines
3440 bytes
3440 bytes
witam
męczę się nad wyciągnięciem danych z bazy danych.
mylą mi się fetchall_array, fetchall_arrayhref, fetchrow_array itd. które
jest do czego i jak się do tego dobrać. Wybaczcie, ale po lekturze perldoc
(nie jestem biegły w angielskim) za chorobe nie mogę tego zakumać. Jakby
były tam przykłady użycia ze zwracanymi danymi było by łatwiej, a tak to
się męczę.
mam taki krótki testowy skrypt:
----------
#!/usr/bin/perl
use DBI;
use Data::Dumper;
$dbase = DBI->connect("DBI:mysql:database=test;host=localhost","root","",
{ RaiseError => 1 });
$dbase->do("SET NAMES utf8");
$sth = $dbase->prepare("SELECT id FROM users");
$sth->execute;
$ile_wierszy = $sth->rows();
print "Pobrałem $ile_wierszy \n";
@users = $sth->fetchall_arrayref();
print "@users\n";
print Dumper(\@users);
$dbase->disconnect();
@tab = qw/a b c d e f g h/;
print Dumper(\@tab);
------------
uruchomienie tego skutkuje wyświetleniem:
/skrypty$ ./dane.pl
Pobrałem 11
ARRAY(0x9e30f48)
$VAR1 = [
[
[
'1'
],
[
'2'
],
[
'4'
],
[
'5'
],
[
'6'
],
[
'7'
],
[
'8'
],
[
'9'
],
[
'10'
],
[
'11'
],
[
'12'
]
]
];
$VAR1 = [
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h'
];
---------
jak widać utworzona ręcznie tabela jest ok.
generalnie moje zapytanie zwraca same id, jedna kolumne w wierszu- zwraca
liste. chcę te dane wepchnąć do tablicy @users.
jak użyłem fetchrow_array to perl krzyczy, że ma jeszcze nie pobrane dane
z uchwytu. więc użyłem fetchall zeby pobrać wszystko i jak widać z dumpa
po części działa bo jako tako dane są jakieś pobrane, ale nie w sposób w
jaki ja bym chciał.
wiem, można to zrobić w while i pushem wpychać kolejne wyniki do tabeli,
ale nie o to chodzi. chcę to zrobić w jednym zapytaniu i co najważniejsze
w końcu opanować te wszystkie fetch'e.
będzie ktoś tak dobry i po krótce opisze mi te fetche, kiedy ich używać i
jak się dostać do tych pobranych danych. z góry wielkie dzięki.
pomoże ktoś?
Technical Details
Message-ID:
<ilbcmq$57j$1@pippin.nask.net.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!not-for-mail From: MaRc <marc@gmails.com> Newsgroups: pl.comp.lang.perl Subject: perl - wyciąganie danych z bazy Date: Thu, 10 Mar 2011 21:35:34 +0100 Organization: NASK - www.nask.pl Lines: 101 Message-ID: <ilbcmq$57j$1@pippin.nask.net.pl> NNTP-Posting-Host: marcin.interdom.net.pl Mime-Version: 1.0 X-Trace: pippin.nask.net.pl 1299789338 5363 193.59.36.199 (10 Mar 2011 20:35:38 GMT) X-Complaints-To: abuse ATSIGN nask.pl NNTP-Posting-Date: Thu, 10 Mar 2011 20:35:38 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.14) Gecko/20110223 Thunderbird/3.1.8 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit