/ 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
MySQL - Hent een linie
Fra : Jimmy


Dato : 01-04-03 16:59

Hej

Jeg har en sygt ineffiktiv måde at hente een linie i min MySQL-database på:

---------
my $list_sth = $dbh->prepare(<<SQL);
SELECT Path_In
FROM mailing_list
WHERE Status = 'Active' AND ID = $Ref_ID
SQL

$list_sth->execute();
while (defined (my $hr = $list_sth->fetchrow_hashref))
{
$Path_In = $hr->{Path_In};
}

---------

Det må kunne gøres kortere og uden at løbe hele tabellen igennem
Nogle af mine UPDATEs og INSERTs anvender jeg "do", men jeg fik det ikke til
at fungere med ovennævnte.

Nogen der kan hjælpe mig videre?

Mvh
Jimmy



 
 
Morten Guldager (01-04-2003)
Kommentar
Fra : Morten Guldager


Dato : 01-04-03 17:17

Tue, 01 Apr 2003 at 15:58 GMT Jimmy wrote
> Jeg har en sygt ineffiktiv måde at hente een linie i min MySQL-database på:
>
> ---------
> my $list_sth = $dbh->prepare(<<SQL);
> SELECT Path_In
> FROM mailing_list
> WHERE Status = 'Active' AND ID = $Ref_ID
> SQL
>
> $list_sth->execute();
> while (defined (my $hr = $list_sth->fetchrow_hashref))
> {
> $Path_In = $hr->{Path_In};
> }
>
> ---------
>
> Det må kunne gøres kortere og uden at løbe hele tabellen igennem

Jo da, drop din while:

my $hr = $list_sth->fetchrow_hashref);
$Path_In = $hr->{Path_In};

Og så kan en

limit 1

sidst i din SQL sikkert også pynte lidt på det.


/Morten

Jimmy (01-04-2003)
Kommentar
Fra : Jimmy


Dato : 01-04-03 17:58


"Morten Guldager" <spamtrap@mogul.dk> wrote in message
news:slrnb8jesp.9cc.spamtrap@linuxine.mogul.dk...
> Tue, 01 Apr 2003 at 15:58 GMT Jimmy wrote
> > Jeg har en sygt ineffiktiv måde at hente een linie i min MySQL-database
på:
> >
> > ---------
> > my $list_sth = $dbh->prepare(<<SQL);
> > SELECT Path_In
> > FROM mailing_list
> > WHERE Status = 'Active' AND ID = $Ref_ID
> > SQL
> >
> > $list_sth->execute();
> > while (defined (my $hr = $list_sth->fetchrow_hashref))
> > {
> > $Path_In = $hr->{Path_In};
> > }
> >
> > ---------
> >
> > Det må kunne gøres kortere og uden at løbe hele tabellen igennem
>
> Jo da, drop din while:
>
> my $hr = $list_sth->fetchrow_hashref);
> $Path_In = $hr->{Path_In};
>
> Og så kan en
>
> limit 1
>
> sidst i din SQL sikkert også pynte lidt på det.


Det er jo smukt. Tak for det.
Hvordan skulle man gøre, hvis man ikke følte behov for at prepare
SQL-strengen først?

Så er man vel nede på 2 liniers kompakt, men stadig læsevenlig kode?

Mvh
Jimmy



Dennis Haney (11-04-2003)
Kommentar
Fra : Dennis Haney


Dato : 11-04-03 21:22

"Jimmy" <nyhedsgruppe@get2net.dk> writes:

> "Morten Guldager" <spamtrap@mogul.dk> wrote in message
> news:slrnb8jesp.9cc.spamtrap@linuxine.mogul.dk...
> > Tue, 01 Apr 2003 at 15:58 GMT Jimmy wrote
> > > Jeg har en sygt ineffiktiv måde at hente een linie i min MySQL-database
> på:
> > >
> > > ---------
> > > my $list_sth = $dbh->prepare(<<SQL);
> > > SELECT Path_In
> > > FROM mailing_list
> > > WHERE Status = 'Active' AND ID = $Ref_ID
> > > SQL
> > >
> > > $list_sth->execute();
> > > while (defined (my $hr = $list_sth->fetchrow_hashref))
> > > {
> > > $Path_In = $hr->{Path_In};
> > > }
> > >
> > > ---------
> > >
> > > Det må kunne gøres kortere og uden at løbe hele tabellen igennem
> >
> > Jo da, drop din while:
> >
> > my $hr = $list_sth->fetchrow_hashref);
> > $Path_In = $hr->{Path_In};
> >
> > Og så kan en
> >
> > limit 1
> >
> > sidst i din SQL sikkert også pynte lidt på det.
>
>
> Det er jo smukt. Tak for det.
> Hvordan skulle man gøre, hvis man ikke følte behov for at prepare
> SQL-strengen først?

Læse man DBI? så kan man se der er sådanne spændende funktioner som selectall_arrayref

>
> Så er man vel nede på 2 liniers kompakt, men stadig læsevenlig kode?
>
> Mvh
> Jimmy
>
>

--
Dennis
I have always thought explanations were overkill when correcting
mistakes. A simple "that's wrong" must suffice. I mean, people are
always aware why they are wrong. They just make mistakes to annoy you.

Søg
Reklame
Statistik
Spørgsmål : 177428
Tips : 31962
Nyheder : 719565
Indlæg : 6407938
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste