Zrobiłem sobie klase, która dziedziczy po mysqli. jedna z głównych różnic to to, że nie jest automatycznie robiony commit, tylko po wykonaniu serii zapytań.
W skrócie:
class class_db extends mysqli { // tu jest konstruktor, który m.in ustawia autocommit(false) i łączy się z bazą function query($query,$krytyczne=true) { $wynik = parent::query($zapytanie); $this->commit(); return $wynik; } }
funkcja query jest trochę bardziej rozbudowana, ale to tak dla uproszczenia to, co najważniejsze.
I teraz jest problem. po wykonaniu $this->commit wartość insert_id jest ustawiana na 0.
żeby jednak nie poprawiać już istniejącego kodu, chciałem stworzyć własną zmienną w mojej klasie o takiej samej nazwie i teraz zaczynają się problemy. Otóż.
zapis taki (gdy nie mam własnej zmiennej insert_id w klasie)
$tmp=$this->insert_id; $this->commit(); $this->insert_id=$tmp; //Cannot write property
zapis taki (gdy mam własną zmienną insert_id w klasie)
$this->insert_id=parent::insert_id; //Undefined class constant 'insert_id' $this->commit();
Zależy mi na tym, żeby moja klasa miała insert_id, bo nie chcę przekopywać całego już istniejącego kodu w poszukiwaniu "gdzie jeszcze mogłem to wykorzystywać, żeby zmienić nazwę zmiennej"
Jakiś inny ktoś ma pomysł, jak to można rozwiązać? Bo chyba za cieńki jestem z obiektówki w PHP