Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z destruktorem
ounc
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 19.11.2005

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


Witam, mam klase, którą wykorzystuje do łączenia się z bazą :
  1. <?php
  2. class sql 
  3. {
  4. private $link;
  5. private $result;
  6. public $rows;
  7. public $ilosczapytan;
  8.  
  9. public function __construct() // laczymy sie z baza
  10. {
  11. $this -> link = @mysql_connect('localhost', 'login', 'pass') or die('Nie mozna sie polaczyc z baza');
  12. mysql_select_db('pierwsza', $this -> link) or die('nie mozna wybrac bazy');
  13. }
  14.  
  15. public function __destruct() // zamykamy polaczenie
  16. {
  17. if(is_resource($this -> link))
  18. {
  19. mysql_close($this -> link);
  20. }
  21. } 
  22.  
  23. public function query($query) //zapytanie do bazy
  24. {
  25. $this -> result = mysql_query($query);
  26. $ii=4;
  27. if(strlen(($msg = mysql_error($this->link))) > 0)
  28. {
  29. die('Blad: '.$msg);  
  30. }
  31. $this->ilosczapytan++;  
  32. }
  33.  
  34. public function fetch_row() //pobieramy wyniki
  35. {
  36.  if($this -> rows = mysql_fetch_array($this -> result))
  37.  {
  38.  return 1;
  39.  }  
  40. }  
  41. }
  42.  
  43. ?>

Klasa articles:
  1. <?php
  2. class articles
  3. {
  4. public $db;
  5.  
  6.  function __construct($db)
  7. {
  8. $this -> db = $db;
  9. }
  10. $this->db->query("SELECT * FROM ...");
  11. (...)
  12. ?>

I wykorzystuje ją np. tak:
  1. <?php
  2. require_once('...');
  3. $db = new sql();
  4. $arts = new articles($db);
  5. $arts->display(1);
  6. $arts->display(2);
  7.  
  8. ?>

Wtedy dostaje blad:
Kod
Warning: mysql_error(): 6 is not a valid MySQL-Link resource in sql.php
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in sql.php

Jeśli usune destruktor wszystko jest OK
I pytanie czemu tak się dzieje ?

Ten post edytował ounc 9.03.2006, 11:23:16
Go to the top of the page
+Quote Post
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


ma to zwiazek napewno z funkcja is_resource().. jaki jednak, tego ci nie powiem...

nie widze też powodu czemu mialbys uzywac tej funkcji, skoro zasoby (resource) zwracaja false w przypadku bledu... nie lepiej uzyc wtedy:
  1. <?php
  2.  
  3. if ($this->link) {
  4. //php code
  5. }
  6.  
  7. ?>


i jeszcze jedno:
  1. <?php
  2.  
  3. public function query($query) //zapytanie do bazy
  4. {
  5. $this -> result = mysql_query($query);
  6. $ii=4; //co to jest? biggrin.gif  
  7. if(strlen(($msg = mysql_error($this->link))) > 0)
  8. {
  9. die('Blad: '.$msg);  
  10. }
  11. $this->ilosczapytan++;  
  12. }
  13.  
  14. ?>
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 Aktualny czas: 19.08.2025 - 10:40