Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dwa zapytania MySQL pod sobą, resource of mysql->unknown
erix
post
Post #1





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Czołem!

Kadziłem sobie prostą aplikację, wszystko było ok do momentu, gdy nie wywołałem dwóch zapytań pod sobą:

przykładowo:

  1. <?php
  2. //...
  3. function __construct
  4. //...
  5. $this->x = $db->query('...');
  6. $this->y = $db->query('...');
  7. //...
  8. ?>


W powyższym przykładzie $db->query zwraca obiekt, którego jedna ze zmiennych zawiera zasób zwracany przez mysql_query" title="Zobacz w manualu PHP" target="_manual. Wyciągnięte dane są wykorzystywane w innych fragmentach klasy, oczywiście - zwalniane, gdy nie są już potrzebne.

W czym tkwi problem: otóż, gdy wykonywane jest jedno z powyższych zapytań - jest ok. Jednak gdy wykonują się oba, zasób drugiego jest prawidłowy (resource # of mysql), natomiast pierwsze - resource # unknown.

I zonk, gdyż nie wiem kompletnie, o co chodzi...

Gdy wykonam drugie zapytanie ze zwracaniem danych jako zmiennej lokalnej, gdzieś tam dalej, jest ok. Treść zapytań jest prawidłowa.

Znalazłem obejście (wynik zapytania jako zmienna lokalna), ale rozwiązania nie znalazłem...

Czy ktoś spotkał się z podobnym problemem?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ja mam coś podobnego, ale inaczej wywoływane

  1. <?php
  2. class a {
  3. private $x;
  4. private $y;
  5.  
  6. public function __construct() {
  7.  $this->x = $db->query(...);
  8.  $this->y = $db->query(...);
  9.  
  10.  is_object($this->x);  //true
  11.  is_object($this->y);  //true
  12. }//
  13.  
  14.  
  15. function bleble(){
  16.  //tu byly wywolania docelowe, ale szczegol
  17. }
  18. }
  19. ?>


$db->query() zwraca coś takiego:

  1. <?php
  2. class dbResult{
  3. private $resource = null;
  4.  
  5. function __construct($res){
  6. $this->resource = $res;
  7. }
  8. }
  9.  
  10. //...
  11. function query($q){
  12. //...
  13. return new dbResult(mysql_query($q));
  14. }
  15. ?>


Platforma, Windows XP, Apache2, PHP 5.2.6. Po zmianie z private na public dla $resource w dbResult i var_dump" title="Zobacz w manualu PHP" target="_manual na tą zmienną zwracał odpowiednio resource of unknown, za drugim razem of mysql...

Nie wiem, jakich jeszcze szczegółów byś potrzebował...
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: 15.10.2025 - 22:50