Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kłopot z przekazaniem obiektu PDO
Forum PHP.pl > Forum > PHP > Object-oriented programming
label
Zacząłem pisać sobie skrypt srony + kilka klas i już przy pierwszej mam dosyć duży kłopot.
mój plik wygląda tak:
  1. <?php
  2. class engine
  3. {
  4. public $tag;
  5. public $pdo;
  6.  
  7. function __construct()
  8. {
  9. try
  10.  {  
  11. $this->pdo = new PDO('mysql:host=localhost;dbname=adam', 'root', '');
  12. $this->pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  13. echo 'Polaczenie nawiazane!';
  14.  }
  15.  catch(PDOException $e)
  16. {
  17. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  18.  }
  19. require('class.tag.php');
  20. $this->tag = new tag($this->pdo);
  21. }
  22. }
  23.  
  24. $engine = new engine();
  25. $engine->tag->getTagForItem(1, 10);
  26.  
  27. ?>


plik class.tag.php wygląda tak:
  1. <?php
  2. class tag
  3. {
  4. public $pdo;
  5.  
  6. function __construct($con)
  7. {
  8. $this->pdo = $con;
  9. }
  10.  
  11. function getTagForItem($item, $ile)
  12. {
  13.  
  14. $tags = $this->pdo->prepare('SELECT name, counter FROM tags WHERE item_id = :item ORDER BY counter DESC LIMIT
     0,:ile'
    );
  15. $tags->bindParam(':item', $item);
  16. $tags->bindParam(':ile', $id);
  17. $tags->execute();
  18. $row = $tags -> fetchAll(PDO::FETCH_NUM);
  19. print_r(nl2br($row));
  20. }
  21.  
  22.  
  23.  
  24. }
  25. ?>


jestem kiepski z wiedzy o php, te klasy pisałem intuicyjnie i po wywołaniu pliku index.php otrzymuje
  1. Polaczenie nawiazane!Array
czyli pustą tablicę. Tabela nie jest pusta, zapytanie na pewno jest ok. Przypuszczam, że źle przekazuje obiekt $pdo. No nie wiem. Jest mi w stanie ktoś pomóc?
kriqs
zmien to
  1. <?php
  2. print_r(nl2br($row));
  3. ?>

na
  1. <?php
  2. print_r($row);
  3. ?>


i napewno masz pusta tablice questionmark.gif
label
Wtedy zamiast
  1. Polaczenie nawiazane!Array
otrzymuję
  1. Polaczenie nawiazane!Array ( )
może ktoś mi podpowie jak on sobie radzi z połączeniem PDO wewnątrz klas?
DeyV
Co się dzieje, jeśli usuniesz parametry z tego zapytania (i oczywiście nie będziesz ich bindował) ?

Ewentualnie spróbuj skorzystać z bindValue()

Swoją drogą - zazwyczaj unikam przekazywania połączenia z bazą w ten sposób - za dużo zabawy, i za duże ryzyko "zgubienia" jej w "międzyczasie" - zamiast tego - korzystam z Singletona
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.