Det er sådan jeg har lært at bruge hashes. Men nu har jeg en MySQL-Connection med DBI. og min result giver en hash, som jeg ikke forstår hvordan man for fat i en bestemt value. --- while ($dbValues = $result->fetchrow_hashref) { while (($attr,$value)=each(%$dbValues)) { print $attr.' -> '.$value."\n"; } } --- hvirker - men med "%$" i %$dbValues. den forstår jeg ikke ...
hvis nu en spalte i DB'en hedder "col1" - hvordan kan jeg så direkte få fat i værdien? --- while ($dbValues = $result->fetchrow_hashref) { print $dbValues{'col1'}; # virker ikke } ---
Det vigtigt at du er klar over at fetchrow_hashref *ikke* giver dig en hash, men derimod en reference til en hash. Det er det man i andre sprog kalder for en pointer.
Med:
while ($dbValues = $result->fetchrow_hashref)
- vil $dbValues altså indeholde pointeren til en hash, og for at få selve hashen, så skal den foranstilles med et %-tegn:
while (($attr,$value)=each(%$dbValues))
Og ligesom du foranstiller med et $-tegn når du vil udskrive et enkelt-element fra en hash, så skal du også bruge et $-tegn i dette tilfælde. Med det $-tegn der allerede er der, bliver det derfor hele 2 $-tegn:
Jeg smider normalt aldrig et svar før at jeg er helt sikker på at den som spørger har fået ordentligt svar på sit spørgsmål... Det kunne jo tænkes at du havde mere du ville spørge om?
... og et svar :^)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.