Avatar billede tfswebguy Nybegynder
21. oktober 2008 - 13:48 Der er 7 kommentarer og
1 løsning

kan ikke få en funktion til at virke

Hej experter..

Har lavet denne funktion:

function sql($ident,$rows,$from,$where,$order,$limit){
$query = "SELECT ". $rows;
$query .= " FROM ". $from;
if($where != ""){
  $query .= " WHERE(". $where .")";
}
if($order!= ""){
  $query .= " ORDER BY ". $order;
}
if($limit != ""){
  $query .= " LIMIT ". $limit;
}
$output[$ident] = mysql_fetch_array(mysql_query($query)) or die(mysql_error());
}


Funktionen er lagt efter mit SQL connect kald.

Men når jeg bruger:
    sql('1','username','users','username=\'test\'','','');
    echo $output['1']['username'];

Kommer der ikke noget output

Hvis jeg prøver med:
    sql('1','username,password,email','users','username=\'test\'','','');
    echo count($output['1']);

står der bare 0

Hvorfor?
Avatar billede dkfire Nybegynder
21. oktober 2008 - 14:09 #1
Nok fordi din variabel $output er en lokal variabel for funktionen og kan ikke bruges uden for funktionen.
Avatar billede majbom Novice
21. oktober 2008 - 14:11 #2
hvor/hvordan definerer du $output?
Avatar billede majbom Novice
21. oktober 2008 - 14:11 #3
to slow :)
Avatar billede tfswebguy Nybegynder
21. oktober 2008 - 14:32 #4
Kan jeg gøre den global?
Avatar billede dkfire Nybegynder
21. oktober 2008 - 14:43 #5
Det kommer da meget an på hvordan du vil organisere din kode. Men at gøre en variabel global er nok ikke lige det smarteste.
Jeg vil nok vælge at bruge return i din funktion.
Avatar billede micc Nybegynder
22. oktober 2008 - 23:59 #6
Det følgende burde virke (læg mærke til at jeg har fjernet "$ident"-argumentet, da det ikke er nødvendigt):

function sql($rows,$from,$where,$order,$limit){
$query = "SELECT ". $rows;
$query .= " FROM ". $from;
if($where != ""){
  $query .= " WHERE(". $where .")";
}
if($order!= ""){
  $query .= " ORDER BY ". $order;
}
if($limit != ""){
  $query .= " LIMIT ". $limit;
}
$output = mysql_fetch_array(mysql_query($query)) or die(mysql_error());
return $output;
}

Hvilken plads resultatet skal have i output-arrayet vælger du så idet du returnerer funktionsværdien:

$output[1] = sql('username','users','username=\'test\'','','');
echo $output[1]['username'];

Håber det gav mening.
Avatar billede tfswebguy Nybegynder
19. november 2008 - 04:35 #7
hey.. Må ærligt indrømme jeg ikke lige har tjekket op på dette.. (Kan faktisk ikke engang huske, hvor jeg ville bruge det henne) Hehe..

Men altså selvf kan man da lige bruge output ;)

Takker for forslaget.. Smid et svar :)
Avatar billede tfswebguy Nybegynder
04. februar 2009 - 12:15 #8
Intet svar giver svar fra mig
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester