Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: modyfikacja mysqli i problem z insert_id po commit (problem dotyczy klasy i dziedziczenia)
Forum PHP.pl > Forum > PHP
MatKus
Witam.
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:
  1. class class_db extends mysqli
  2. {
  3. // tu jest konstruktor, który m.in ustawia autocommit(false) i łączy się z bazą
  4. function query($query,$krytyczne=true)
  5. {
  6. $wynik = parent::query($zapytanie);
  7. $this->commit();
  8. return $wynik;
  9. }
  10. }


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)
  1. $tmp=$this->insert_id;
  2. $this->commit();
  3. $this->insert_id=$tmp; //Cannot write property


zapis taki (gdy mam własną zmienną insert_id w klasie)
  1. $this->insert_id=parent::insert_id; //Undefined class constant 'insert_id'
  2. $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

solr
A settera dla insert_id, to ta klasa mysqli nie ma może? Jak nie ma, to np. udekoruj dodając właśnie tego settera i dziedzicz z klasy dekorującej mysqli.
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.