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

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Extract() i forhold til list() ?
Fra : Janus Høi


Dato : 15-03-04 22:29

Indtil i dag har jeg gjort følgende når jeg hentede data ud af en database:
(Nedenstående er blot et eksempel jeg lige har skrevet, så jeg garanterer
ikke for at der ikke er fejl i koden.)

$query = "SELECT id, efternavn, navn, adresse, tlf, mobil, mail FROM
kartotek WHERE id=$id";
$sql = mysql_query($query);
while (list($id, $efternavn, $navn, $adresse, $tlf, $mobil, $mail) =
mysql_fetch_array($sql))
{
et eller andet
}


Det har jeg, indtil i dag, syntes var meget smart, så man slap for noget i
stil med $raekker[mail] og istedet havde det noget nemmere $mail at arbejde
med.

I Example 2 på http://dk2.php.net/manual/en/function.list.php er denne
fremgangsmåde vist.

Nu har jeg fundet en function der er meget nemmere end list().
Nemlig extract():
http://dk2.php.net/manual/en/function.extract.php

Her kan man gøre sådan med eksemplet fra lige før:

$query = "SELECT id, efternavn, navn, adresse, tlf, mobil, mail FROM
kartotek WHERE id=$id";
$sql = mysql_query($query);
while ( $raekker = mysql_fetch_array($sql))
{
extract($raekker);
et eller andet
}

Men jeg synes ikke den måde at gøre det på er beskrevet i php-manualen.

Mit spørgsmål er nu:

Er det smartere at bruge extract()-eksemplet fremfor list()-eksemplet, eller
ser det bare sådan ud?
--
Janus




 
 
Jonas Koch Bentzen (16-03-2004)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 16-03-04 00:03

Janus Høi skrev:
>
> Er det smartere at bruge extract()-eksemplet fremfor list()-eksemplet

Ingen af dem er efter min mening optimale. list()-metoden er for besværlig,
mens extract()-metoden giver stor risiko for variabelnavnkollision (altså,
at man kommer til at overskrive en tidligere sat variabel af samme navn).

Hvis du vil have noget, der er let at skrive, så sørg for at få tabelrækken
ud som et objekt, så du kan tilgå et felt som $raekke->felt (det er en
smule hurtigere at skrive end $raekke['felt'], omend ikke meget). Hvis du
bruger mysql_*-funktionerne, bliver det til

while ($raekke = mysql_fetch_object($resultat)) {

Jeg vil dog anbefale, at du bruger PEAR DB
(http://pear.php.net/manual/en/package.database.php#package.database.db) i
stedet, når du bruger SQL-databaser.

--
- Jonas Koch Bentzen

http://understroem.dk/
http://findhim.com/

Peter Brodersen (16-03-2004)
Kommentar
Fra : Peter Brodersen


Dato : 16-03-04 01:32

On Mon, 15 Mar 2004 22:29:26 +0100, "Janus Høi"
<HOI@sletdetteJAGI.COM> wrote:

>Er det smartere at bruge extract()-eksemplet fremfor list()-eksemplet, eller
>ser det bare sådan ud?

Jeg holder mig normalt altid fra extract(), fordi jeg ikke vil have et
vilkårligt array-resultat til potentielt at overskrive ens
eksisterende variable.

Det kan let blive en større omgang forvirring, hvis man fx sætter $id
i starten af scriptet, kører en "SELECT * FROM ..." på en tabel hvor
et felt hedder "id", og derefter en extract() - og så er $id pludselig
overskrevet, uden det er tydeligt, hvor $id bliver ændret undervejs,
hvis man hurtigt kigger scriptet igennem, fx ved at søge efter "id" i
teksten.

--
- Peter Brodersen

Ugens sprogtip: hoved (og ikke hovede)

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste