Kom ihåg mig?
Home Menu

Menu


PHP variabler, fråga...

Ämnesverktyg Visningsalternativ
Oläst 2010-11-19, 00:21 #1
youheardit youheardit är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Oct 2008
Inlägg: 1 168
youheardit youheardit är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Oct 2008
Inlägg: 1 168
Standard PHP variabler, fråga...

Hejsan WN!

har en snabb fråga som jag inte kunnat googla fram då den är allt för enkel...

När man jobbar med funktioner och klasser så använder man ju oftast variabler inne i dessa. Exempel:
PHP-kod:
function wn(){
$get_data mysql_query("SELECT somtething"); //en select fråga
$data mysql_fetch_assoc($get_data);
return 
$data['kolumn'];

Frågan jag ställer är om det går att använda $get_data variablen igen till en ny fråga utanför funktionen exempel:
PHP-kod:
echo wn();

$get_data mysql_query("SELECT something else"); //en select fråga efter en annan tabell etc...
$data mysql_fetch_assoc($get_data);
echo 
$data['kolumn']; 
Går detta utan att mysql klabbar på något sätt?
Dvs blir variablerna innuti en funktion ignorerade utanför funktionen?

och nej, jag har inte testat själv. Detta då det är så svårt ibland att tolka felen i mysql.

tacksam för svar!
youheardit är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-19, 00:28 #2
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
Det skall inte vara några problem. De variabler du har i funktionen är inte tillgängliga utanför.
Dessutom bryr sig inte MySQL om vilka variabler du använder, eller om du använder samma variabel till flera sql-frågor.
Om du kör tre olika frågor genom mysql_query och lagrar i samma variabel är det den sista som kommer användas när du hämtar resultatet.

Du får garanterat inget fel från mysql. Däremot kan det komma något från php om du t.ex. kör en sqlfråga inuti din funktion och sedan försöker hämta resultatet utanför funktionen:
PHP-kod:
function wn(){
$get_data mysql_query("SELECT somtething"); //en select fråga
$data mysql_fetch_assoc($get_data);
return 
$data['kolumn'];
}  

echo 
wn();

$data mysql_fetch_assoc($get_data);
echo 
$data['kolumn']; 
Detta kommer ju inte funka eftersom $get_data inte finns definerad utanför funktionen, men det visste du väl redan
qson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-19, 00:47 #3
youheardit youheardit är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Oct 2008
Inlägg: 1 168
youheardit youheardit är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Oct 2008
Inlägg: 1 168
Citat:
Ursprungligen postat av qson Visa inlägg
Det skall inte vara några problem. De variabler du har i funktionen är inte tillgängliga utanför.
Dessutom bryr sig inte MySQL om vilka variabler du använder, eller om du använder samma variabel till flera sql-frågor.
Om du kör tre olika frågor genom mysql_query och lagrar i samma variabel är det den sista som kommer användas när du hämtar resultatet.

Du får garanterat inget fel från mysql. Däremot kan det komma något från php om du t.ex. kör en sqlfråga inuti din funktion och sedan försöker hämta resultatet utanför funktionen:
PHP-kod:
function wn(){
$get_data mysql_query("SELECT somtething"); //en select fråga
$data mysql_fetch_assoc($get_data);
return 
$data['kolumn'];
}  

echo 
wn();

$data mysql_fetch_assoc($get_data);
echo 
$data['kolumn']; 
Detta kommer ju inte funka eftersom $get_data inte finns definerad utanför funktionen, men det visste du väl redan
Tack så mycket för ett klockrent svar!

Men jag har tidigare fått problem med likanande:
PHP-kod:
$result mysql_query("SELECT something");
$line mysql_fetch_assoc($result);
echo 
$line['kolumn'];

$result mysql_query("SELECT something else");
$line mysql_fetch_assoc($result);
echo 
$line['kolumn']; 
I detta fallet har jag tidigare fått problem genom att den gamla fråga är den som kommer att skrivas ut i $line i andra frågan....
youheardit är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-19, 00:59 #4
Normans avatar
Norman Norman är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2004
Inlägg: 589
Norman Norman är inte uppkopplad
Mycket flitig postare
Normans avatar
 
Reg.datum: Feb 2004
Inlägg: 589
Läs på om scope inom programmering så får du mer information om synlighet av variabler i bland annat funktioner och klasser.
Norman är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-19, 09:02 #5
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
http://se2.php.net/manual/en/languag...bles.scope.php
hnn är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-19, 19:41 #6
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Ett tips som är generellt och som jag rekommenderar i alla programspråk är att dela upp kod i mindre delar så de blir lätta och får en självklar betydelse, i så hög utsträckning som möjligt. Vad jag menar är att du skriver ungefär så här i ditt fall:

Kod:
<?php

function something()
{
    $result = mysql_query("SELECT something"); 
    $line = mysql_fetch_assoc($result); 
    return $line['kolumn'];
}

function somethingElse()
{
    $result = mysql_query("SELECT something else"); 
    $line = mysql_fetch_assoc($result); 
    return $line['kolumn'];  
}

function toString()
{
    echo something();
    echo somethingElse();
}

toString();

?>
Det blir även enklare att lägga ut koden i klasser om du följer denna princip.

Senast redigerad av Conny Westh den 2010-11-19 klockan 21:25
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-11-20, 12:48 #7
youheardit youheardit är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Oct 2008
Inlägg: 1 168
youheardit youheardit är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Oct 2008
Inlägg: 1 168
Citat:
Ursprungligen postat av ConnyWesth Visa inlägg
Ett tips som är generellt och som jag rekommenderar i alla programspråk är att dela upp kod i mindre delar så de blir lätta och får en självklar betydelse, i så hög utsträckning som möjligt. Vad jag menar är att du skriver ungefär så här i ditt fall:

Kod:
<?php

function something()
{
    $result = mysql_query("SELECT something"); 
    $line = mysql_fetch_assoc($result); 
    return $line['kolumn'];
}

function somethingElse()
{
    $result = mysql_query("SELECT something else"); 
    $line = mysql_fetch_assoc($result); 
    return $line['kolumn'];  
}

function toString()
{
    echo something();
    echo somethingElse();
}

toString();

?>
Det blir även enklare att lägga ut koden i klasser om du följer denna princip.
tack för det där Conny! Jo, jag brukar bygga mycket med klasser när det gäller stora sidor.

Men så djupt som du visade är inget jag brukar göra, men det låter logiskt! tack!
youheardit är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:03.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017