Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> kłopot z przekazaniem obiektu PDO
label
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 26.10.2005
Skąd: Gostynin

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




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
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 21:32