Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PDO/OOP] pdo classie
Forum PHP.pl > Forum > PHP > Object-oriented programming
muru
Hi próbuje stworzyc obiekt, którego konstruktor będzie wyposażony w biblioteke PDO, za każdym razem wywala mi błąd. Moze widzicie jakies błędy?
  1. <?php
  2.  
  3. try
  4. {
  5. class DAJ {
  6. var $daj;
  7. PDO $pdo;
  8. PDO $stmt;
  9. public function _construct($wers){
  10. $this->$daj = $wers;
  11. $this->$pdo = new PDO('mysql:host=localhost;dbname=xxxxxxx', 'xxxxxx', 'xxxxxxxxx');
  12. $this->$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  13.  
  14. $this->$stmt = $pdo -> prepare('SELECT * FROM `glowna` WHERE `gl_id` = :ida');
  15. $this->$stmt -> bindValue(':ida', $this->$daj, PDO::PARAM_INT);
  16. $this->$stmt -> execute();
  17.  
  18. if($row = $this->$stmt -> fetch())
  19. {
  20. echo '<br><a href="ksiega.php?strona='.$row['gl_id'].'" > '.$row['gl_normal'].' : .$row['gl_cecha'].'</a>';
  21. }
  22. else
  23. {
  24. echo '<hr/><p>Przepraszamy, podany rekord nie istnieje!</p>';
  25. }
  26. $stmt -> closeCursor();
  27.  
  28. catch(PDOException $e)
  29. {
  30. echo 'Wystapil blad biblioteki PDO: ' . $e->getMessage();
  31. }
  32.  
  33.  }
  34. }
  35. }
  36.  
  37. ?>


konstruktor jako argument otrzymuje zmienną i na jej podstawie przeszukując beze danych wypluwa odpowiedni wynik w postaci obiektu
mysz
1. Skoro PDO, to używasz PHP5. Co tam robi to słówko 'var'?
2. Skąd Ci wpadł do głowy pomysł, że w PHP deklaruje się w klasach typ właściwości?
dr_bonzo
3. Nie umieszczaj kodu klasy w bloku try/catch (ani w zadnym innym)
4. _construct powinno byc z dwoma podkresleniami
5. i podaj komunikat tego bledu, przeciez my tego nie sprawdzimy -- nie dales nam struktury bazy ani danych, ktore tam masz
Ociu
6.
  1. <?php
  2. public $daj;
  3. ?>

7.
  1. <?php
  2. $this->pdo = ...;
  3. ?>

8.
  1. <?php
  2. PDO $pdo;
  3. ?>
questionmark.gif
9. Poczytaj o OOP.
muru
No właśnie chyba nie wyszło mi to na zdrowie:), przedstawiłem tylko jedną z moich prób no i błąd okazał się trywialny - mianowicie używam E-NETu i pomimo że go niedawno ściągnąłem nie ma zaimplementowanych nowych bibliotek php:(, Ostatecznie ruszyło:


  1. <?php
  2. class DAJ {
  3. public function lacz($user, $password)
  4. {
  5. try
  6. {
  7. $this->db = new PDO('mysql:host=localhost;dbname=xxxxx', $user, $password);
  8. $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  9. $this->db->beginTransaction();
  10. }
  11. catch ( PDOException $e )
  12. {
  13. $this->error = true;
  14. echo('Błąd - '.$e->getMessage());
  15.  
  16. }
  17. }
  18. ?>


Przemyślałem też trochę budowę klasy i doszedłem do wniosku, że będzie bardziej przydatna jeśli się będzie składała z większej ilości funkcji składowych niż tylko konstruktora(z którego na razie rezygnuje).

pozdrawiam

----------
Prosze pamietac o odpowiednim bbcode!
--
dr_bonzo
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.