/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
fetchall_array - hvordan behandler jeg dat~
Fra : Thomas Skyt


Dato : 20-07-02 21:29

Som subject siger, har jeg problemer med fetchall_aray.

Jeg har i en ekstern fil, som jeg use'r som modul, en fuktion liggende -
'domysql' - denne udfører en query, der supplies som argument.

Resultatet hentes med "fetchall_array" og dumpes tilbage. Mit problem er
at jeg har tabeller med flere poster (underligt, ik'?), og følgende lille
stump kode behandler dem ikke helt efter hensigten.
Istedet for i første omgang at gå fra tabel til tabel, dernæst fra række
til række og sætte $row til rækken, således at jeg kan hente en kolonne
med $row[0], sætter den $row til en kolonneværdi, uden dog at tillade mig
at benytte $tabel[0] for at få fat i en specifik kolonne.
Hvorfor h******* gør den det??

Det skal for god ordens skyld lige nævnes at query'en er iorden - den
returnerer data og det hele, det er blot koden, der ikke helt giver mig
det på fornuftig vis og som nævnt ovenfor er jeg ude efter at kunne
"skære" så meget rundt på resultatet $table at jeg kan få fat i hver
enkelt række i en løkke - den inderste i nederste eksempel.

KODE:

$table = domysql($query);

foreach (@{$table}) {
   $row = $_;

   foreach(@{$row}) {
      @column = $_;

      $id = $column[0];
      $caption = $column[2];

      ... noget kode, der har brug for $id og $caption ...

   }
}

:KODE

/Thomas Skyt

 
 
wulff (20-07-2002)
Kommentar
Fra : wulff


Dato : 20-07-02 22:21

On Sat, 20 Jul 2002 22:29:18 +0200, Thomas Skyt <thomas@sofagang.dk>
wrote:
>Resultatet hentes med "fetchall_array" og dumpes tilbage. Mit problem er
>at jeg har tabeller med flere poster (underligt, ik'?), og følgende lille
>stump kode behandler dem ikke helt efter hensigten.
>Istedet for i første omgang at gå fra tabel til tabel, dernæst fra række
>til række og sætte $row til rækken, således at jeg kan hente en kolonne
>med $row[0], sætter den $row til en kolonneværdi, uden dog at tillade mig
>at benytte $tabel[0] for at få fat i en specifik kolonne.
>Hvorfor h******* gør den det??

Hmmm... Hvis domysql() returnerer resultatet af et kald til
$statement_handle->fetchall_arrayref(), er det jo kun resultatet fra
det seneste query, du får tilbage.

Hvordan ser din forespørgsel ud? (og hvordan ser domysql() ud?)


/wulff


Flemming Mahler Lars~ (20-07-2002)
Kommentar
Fra : Flemming Mahler Lars~


Dato : 20-07-02 22:41

Thomas Skyt wrote:
> Istedet for i første omgang at gå fra tabel til tabel, dernæst fra række
> til række og sætte $row til rækken, således at jeg kan hente en kolonne
> med $row[0], sætter den $row til en kolonneværdi, uden dog at tillade mig
> at benytte $tabel[0] for at få fat i en specifik kolonne.
> Hvorfor h******* gør den det??

Jeg er ikke helt sikker på hvad du mener, men måske kan følgende hjælpe...

Normalt hvis jeg præsentere lister af data udtrukket fra databasen, er
den enkleste måde ofte følgende(*):

my $data = $dbh->selectall_arrayref('select * from table, table2 where
table.foreignid=table.id', , { Columns => {} });

Så får du returneret en arrayref, hvor hver entry i arrayet er en
hashref og hashkeys er kolonnenavnene...

Du vil så kunne komme til data op behandle disse med en:

for my $row (@$data) {
my $id = $row->{id};
my $cation = $row->{caption};

# ... noget kode, der har brug for $id og $caption ...
}

(( Flemming ))

*) Hvis du kører med en ældre DBI-udgave, skal du kigge på
selectall_hashref i stedet, den gør det samme.
--
Flemming Mahler Larsen, Online Technology @ TDC Internet
http://card.netfactory.dk/ , +45 3552 6452

Jeg repræsenterer med dette indlæg mig selv og ikke TDC Internet


Thomas Skyt (20-07-2002)
Kommentar
Fra : Thomas Skyt


Dato : 20-07-02 23:26

On Sat, 20 Jul 2002 22:29:18 +0200, Thomas Skyt wrote:

> Resultatet hentes med "fetchall_array" og dumpes tilbage. Mit problem er
> at jeg har tabeller med flere poster (underligt, ik'?), og følgende
> lille stump kode behandler dem ikke helt efter hensigten. Istedet for i
> første omgang at gå fra tabel til tabel, dernæst fra række til række og
> sætte $row til rækken, således at jeg kan hente en kolonne med $row[0],
> sætter den $row til en kolonneværdi, uden dog at tillade mig at benytte
> $tabel[0] for at få fat i en specifik kolonne. Hvorfor h******* gør den
> det??

Jeg har i mellemtiden fået løst det - når jeg kører mod_perl skal jeg
åbenbart addressere arrayet med ->, altså $row->[0] for at få det første
felt ... underligt, men ok - nu ved jeg så det.

/Thomas Skyt

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste