Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie PDO w klasie, problem z uzywaniem PDO w własnej klasie
voxupog
post 25.06.2010, 18:00:01
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 14.06.2009

Ostrzeżenie: (0%)
-----


Witam
ma problem ze nawet nie wiem pod jakim tematem tego szukać sad.gif

mam klasę team:

  1. class team
  2. {
  3. public $name;
  4. public $ustawienie;
  5. public $zawodnicy;
  6.  
  7. public function pobierzteam()
  8. {
  9. echo $this->name;
  10. $zapytanie = $pdo -> query("SELECT ustawienie FROM druzyna WHERE team='1'");
  11. $row = $zapytanie->fetch();
  12. $this->ustawienie = $row['ustawienie'];
  13.  
  14. }
  15.  
  16. };


kiedy $zapytanie jest wywoływane poza klasa wszystko jest ok.
w klasie wyskakuje mi taki błąd: Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\utf8_game\include\rozgrywka.php on line 14

nieaktualne ;P

Ten post edytował voxupog 25.06.2010, 18:06:12
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
red9skull
post 25.06.2010, 18:03:47
Post #2





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


Nie masz utworzonego obiektu $pdo - btw ten temat zasługuje na przedszkole.


--------------------
zmoderowano - zbyt fajna
Go to the top of the page
+Quote Post
Blame
post 25.06.2010, 18:04:40
Post #3





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


Błąd chyba coś powinien mówić. Nie widzę nigdzie $pdo = new PDO($db, $user, $pass);, czy jakoś tak. Nie wiem nie używam PDO tongue.gif

Ten post edytował Blame 25.06.2010, 18:05:58


--------------------
Go to the top of the page
+Quote Post
Atomic_Cookie`
post 26.06.2010, 11:49:41
Post #4





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 26.06.2010
Skąd: Polska

Ostrzeżenie: (0%)
-----


Albo użyjesz Global (nie zalecane) albo:

  1. class team
  2. {
  3. public $name;
  4. public $ustawienie;
  5. public $zawodnicy;
  6.  
  7. public function pobierzteam($uchwyt_do_pdo)
  8. {
  9. echo $this->name;
  10. $zapytanie = $uchwyt_do_pdo -> query("SELECT ustawienie FROM druzyna WHERE team='1'");
  11. $row = $zapytanie->fetch();
  12. $this->ustawienie = $row['ustawienie'];
  13.  
  14. }
  15.  
  16. };

Potem wywołujesz
$team = new team;
$team -> pobierzteam(zmienna uchwyt do pdo);
tzn. że jak gdzieś dałeś
  1. $pdo = new PDO('', 'root', 'root');
To jako uchwyt podajesz zmienną $pdo. Najlepiej poczytaj o zasięgu zmiennych ;]
//1-szy post.
edit: nvm

Ten post edytował Atomic_Cookie` 26.06.2010, 11:51:16


--------------------
Have a Иice day
Go to the top of the page
+Quote Post
outsider
post 26.06.2010, 19:34:43
Post #5





Grupa: Zarejestrowani
Postów: 267
Pomógł: 36
Dołączył: 8.08.2008

Ostrzeżenie: (0%)
-----


Wystarczy:
  1. class team
  2. {
  3. public $name;
  4. public $ustawienie;
  5. public $zawodnicy;
  6.  
  7. public function pobierzteam()
  8. {
  9. global $pdo; // musisz uwidocznic zmienna
  10.  
  11. echo $this->name;
  12. $zapytanie = $pdo -> query("SELECT ustawienie FROM druzyna WHERE team='1'");
  13. $row = $zapytanie->fetch();
  14. $this->ustawienie = $row['ustawienie'];
  15.  
  16. }
  17.  
  18. };
Go to the top of the page
+Quote Post
cepa
post 26.06.2010, 21:17:39
Post #6





Grupa: Zarejestrowani
Postów: 125
Pomógł: 7
Dołączył: 27.01.2010

Ostrzeżenie: (0%)
-----


u mnie w robocie za uzywanie global mozna dostac kopa w dupe tongue.gif

ogolnie:
1 - utworz sobie setter i getter na skladowa protected $_pdo;
2 - w konstruktorze klasy mozesz ladowac domyslny obiekt pdo
3 - domyslny obiekt pdo powinien byc singletonem
4 - aby zrobic z pdo singletona musisz go przeciarzyc ale jest to ogolnei banalne

ale to tyle w temacie pdo, bo imho masz zly design swojej klasy, myslales moze o zrobieniu sobie nakladki do wkonywania zapytan i pobierania wynikow? troche wiecej kodu na poczatek ale pozniej mniej refaktoringu smile.gif

Ten post edytował cepa 26.06.2010, 21:19:18


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:37