Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie mysql w funkcji
Forum PHP.pl > Forum > Przedszkole
lordvanyuri
Witam,
Jak podejść do następującego problemu.
Na stronie chcę ściągnąć status z bazy danych mysql w kilku miejscach i wszystko jest ok.
Ale problem pojawia się, wtedy gdy chcę przerzucić ściągnięcie statusu do funkcji - jak to obejść?

Sytuacja, gdy wszystko działa:

strona index.php
  1. $getstatus = $mybase->prepare("SELECT nazwa FROM status WHERE id = 1");
  2. $getstatus->execute();
  3. while($row = $getstatus->fetch()){
  4. $status_txt = $row['nazwa'];
  5. }
  6. print $status_txt;
  7. $getstatus->closeCursor();
  8. unset($getstatus);


i wszystko jest ok, ale gdy już zrobię tak:
  1. $status_txt = get_status(1);
  2. print $status_txt;

a funkcję mam następującą:
  1. function get_status($id_status){
  2. if (isset($id_status)){
  3. $getstatus = $mybase->prepare("SELECT nazwa FROM status WHERE id = 1");
  4. $getstatus->execute();
  5. while($row = $getstatus->fetch()){
  6. $status_nazwa = $row['nazwa'];
  7. }
  8. $status_txt = $status_nazwa;
  9. $getstatus->closeCursor();
  10. unset($getstatus);
  11. } else {
  12. $status_txt = false;
  13. }
  14. return $status_txt;
  15. }


I już z funkcji nie zwraca wyniku - domyślam, się, że chodzi o funkcję prepare, czyli funkcja w funkcji.
Przy większych stronach, gdzie trzeba na szybko ściągnąć jakąś nazwę z bazy lepiej i przejrzyściej na stronie wygląda odwołanie do funkcji, niż za kazdym razem umieszczanie tego w kodzie, i stąd moje pytanie, w jakim kierunku iść, aby to przeskoczyć?
viking
A skąd funkcja ma wiedzieć co zawiera zmienna $mybase? Musisz ją przekazać.

  1. function get_status(int $id_status, \PDO $mybase) : ?string {
  2. }
lordvanyuri
Faktycznie, chyba za długo nad tym dumałem, bo rozwiązanie banalne smile.gif dzięki wielkie, łapka poszła smile.gif
nospor
Zanim pojdziesz dalej: wlacz wyswietlanie bledow. Przeciez php plul bledem, ze zmienna $mybase jest niezdefiniowana. Wszystko miales na talerzu, wystarczylo tylko zajrzec do logow a nie strzelac i pol dnia marnowac

przenosze
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.