Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]The script tried to execute a method or access a property of an incomplete object
Forum PHP.pl > Forum > Przedszkole
cornholio666
Witam,

Mam taki kawałek kodu:

plik 1
  1. <?php
  2. include "adodb/adodb.inc.php"; 
  3.  
  4.  
  5.  $db = NewADOConnection('mysql');
  6.  $db->Connect("", "", "", "xxx");
  7.  
  8.  
  9.  if (!isset($_SESSION['db']) ) {
  10. $_SESSION['db'] = $db;
  11.  }
  12. ?>


plik2
  1. <?php
  2.  
  3.  include "image.class.php" ;
  4.  
  5.  $db = $_SESSION['db'];
  6.  $image = new Image($db);
  7.  $image->del_foto($_SESSION['uid']);
  8. ?>


kawalek klasy Image
  1. <?php
  2. var $poz;
  3. var $name;
  4.  
  5. function __construct($db){
  6. $this->db = $db;
  7. }
  8.  
  9. function del_foto($user_id){
  10.  
  11. $query = "SELECT pozycja,image FROM aaa WHERE user_id = $user_id";
  12. $result =$this->db->Execute($query);
  13.  
  14.  //dalsza czesc chyba nieistotna
  15. ?>


W plik 1 z poziomu ajaxa chce wywolac metode del_foto, niestety wywala mi blad

Cytat
Fatal error: Image::del_foto() [<a href='function.Image-del-foto'>function.Image-del-foto</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "ADODB_mysql" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in D:\Apache2.2\htdocs\newsy\includes\user\image.class.php on line 15


linijka 15 to

Cytat
$result =$this->db->Execute($query);
dr_bonzo
Dolacz biblioteke Adodb przed session_start().
Nie przechowujesz chyba obiektow polaczen z baza w sesji??

I popraw tytul, wstaw " The script tried to execute a method or access a property of an incomplete object" lub fragment jak sie nie zmiesci.
em1X
Zamiast ładowac obiektu do SESSION['db'] sprobuj wrzucic serialize($db_conn) - jednak musisz przedefiniowac wg wlasnych potrzeb metody __sleep oraz __wakeup w klasie ADO (specjalne metody wykonywane na obiektach w trakcie serializacji).

Odsyłam do manuala.
dr_bonzo
Mechanizm sesji i tak uzywa serialize(), poza tym obiektow/struktur zdefiniowanych w php nie da sie serializowac (pisze w manualu).
em1X
@dr_bonzo - a owszem, obiekty się da serializować.

Cytat("manual")
When serializing objects, php will attempt to call the member function __sleep() prior to serialization


Wyjątek:
Cytat("manual")
It is not possible to serialize php built-in objects


Jedynie typu resource nie można.
Cytat("manual")
serialize() handles all types, except the resource-type


Odsyłam do ciekawej lektury smile.gif
Serializacja w OOP

edit:
fakt, te serialize w moim przykładzie jest niepotrzebne tongue.gif
cornholio666
Cytat
Nie przechowujesz chyba obiektow polaczen z baza w sesji??


No własnie chciałem żeby sie połaczyc raz. Ile czasu zabiera polaczenie sie z baza i wybranie bazy?
Bo jak nie duzo to chyba łatwiej bedzie dolaczyc ta biblioteke...

Tak czy tak poczytam o tym co napisał em1X.
em1X
warto tak kombinować? chyba ze narzucono ci jakas mala ilosc polaczen do bazy.. nie ma tam jakiegos odpowiednika pernamentnego polaczenia? (jak np mysql_pconnect) ?
dr_bonzo
em1X
Cytat
poza tym obiektow/struktur zdefiniowanych w php nie da sie serializowac

Cytat
It is not possible to serialize php built-in objects

Zgadza sie -- zle dobralem tlumaczenie "php built-in objects" smile.gif

cornholio666
Cytat
Ile czasu zabiera polaczenie sie z baza i wybranie bazy?

Zmierz -- microtime()
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.