Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Parametry funkcji
Forum PHP.pl > Forum > Przedszkole
agentmullder
Witam. Dzis postanowilem zoptymalizowac moj kod. Z racji, ze sporo kodu sie powtarza, to postanowilem zastosowac funkcje. Na etapie testowania funkcji napotkalem na pewien problem, otoz:

wywolanie funkcji:

  1. edytuj('pilka_kolor',$jakies_id);


postac funkcji edytuj:

  1. function edytuj($a,$b)
  2. {
  3. $zapytanie=mysql_query("SELECT '".$a."' FROM pilki WHERE pilka_id='".$b."'");
  4. $zapytanie_wykonaj = mysql_fetch_array($zapytanie);
  5. $d=$zapytanie_wykonaj['"'.$a.'"'];
  6.  
  7. echo $d;
  8.  
  9. }


W taki sposob funkcja nie chce mi wypisac zawartosci zmiennej $d. Podejrzewam, ze problem znajduje sie w sposobie uzycia zmiennej $a=pilka_kolor w tej funkcji, poniewaz wstawiajac w miejsce zmiennej $a w tej funkcji na pilka_kolor wszystko dziala idealnie.

Tutaj kod, ktory dziala tak jak nalezy:

  1. function edytuj($a,$b)
  2. {
  3. $zapytanie=mysql_query("SELECT pilka_kolor FROM pilki WHERE pilka_id='".$b."'");
  4. $zapytanie_wykonaj = mysql_fetch_array($zapytanie);
  5. $d=$zapytanie_wykonaj['pilka_kolor'];
  6.  
  7. echo $d;
  8.  
  9. }


Macie jakies pomysly w jaki sposob uzyc zmiennej $a w tej funkcji dla jej poprawnego dzialania?
thek
Nie... Problemem są u Ciebie apostrofy. Sprawdź zamiast
  1. $zapytanie=mysql_query("SELECT '".$a."' FROM pilki WHERE pilka_id='".$b."'");

choćby
  1. $zapytanie=mysql_query('SELECT '.$a.' FROM pilki WHERE pilka_id='.$b );

Ale zaznaczam... zarówno $a jak i $b w takim wypadku musisz filtrować, bo na chwilę obecną narażasz się na błędy i możliwy atak typu SQL Injection jeśli ktoś dojdzie gdzie można pchnąć ewentualnie zmanipulowane dane.

PS.: Oczywiście przyjąłem, że pilka_id to liczba i stąd darowałem sobie apostrofy. Jak wspomniałem.... FILTRUJ a życie stanie się prostsze winksmiley.jpg Błąd polega w Twoim myśleniu na tym, że nazwa kolumny nie może być ujęta w pojedyncze apostrofy. Może być albo bez, albo w pojedynczych odwróconych czyli `takich`.
agentmullder
O super, dzieki Thek. Co do filtrowania to mam to zrobione, nie wklejalem tego, zeby byl bardziej widoczny sens problemu.

A jesli bym potrzebowal uzyc tej zmiennej $d poza funkcja, to musialbym ustawic ta zmienna jako globalna?
thek
A po co jako global? Walnij ją wtedy dodatkowo jako return $id smile.gif Po co globale stosować? Tylko problemy powodują.
agentmullder
Cytat(thek @ 19.05.2010, 16:02:30 ) *
A po co jako global? Walnij ją wtedy dodatkowo jako return $id smile.gif Po co globale stosować? Tylko problemy powodują.


Jesli zrobie
  1. return $d;
to jak do niej sie dobrac? Bo jesli zrobie pod spodem wywolania funkcji
  1. echo $d;
to mi nie wyswietla.
piotrooo89
może
  1. echo edytuj($a,$b);

?

polecam manual: http://www.php.net/manual/pl/functions.user-defined.php
agentmullder
Cytat(piotrooo89 @ 19.05.2010, 16:26:35 ) *


Dziekuje. Tak widzialem ten manual kilka razy i sie nie dopatrzylem tego ;/
piotrooo89
Cytat(agentmullder @ 19.05.2010, 16:41:06 ) *
widzialem ten manual kilka razy


Ty nie masz go widzieć kilka razy tylko cały czas. tak w gwoli wyjaśnienia smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.