Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dynamiczna podmiana nazwy polaczenia $this->{db}->query
Forum PHP.pl > Forum > PHP
DannyM
Nie wiem czy prawidlowo nazwalem temat.

Chcę wykonać kilka operacji na różnych bazach i musze muszę dodać do db numer $this->{db} + numer ->query
Nie bardzo mi to wychodzi. Oczywiście jak na "sztywno" ustawię nazwy to wszystko działa ale potrzebuje dynamicznego rozwiazania.
Koś ma jakis pomysl?

  1. $count = 1;
  2. foreach ($datas as $data)
  3. {
  4. $this->db.$count->query("YOUR QUERY");
  5. $this->db.$count->query("YOUR QUERY");
  6. $this->db.$count->query("YOUR QUERY");
  7.  
  8. }
nospor
Problem z OOP ma sredni zwiazek. Przenosze

ps: czemu z ->db nie zrobisz poprostu tablicy baz? To jest najbardziej naturalne rozwiazanie tutaj
DannyM
A mozesz jakis przyklad?
Dziekuje
Tomplus
Tak jak mówi Nospor.

  1. //gdzie $bazaDanych to wartość klucza która reprezentuje ustawienia do połączenia się z konkretną bazą.
  2. $this->db = new Database($bazaDanych);


Wtedy takich połączeń możesz tworzyć wiele. przy pomocy jednej klasy obsługi.
nospor
@Tomplus twoj kod nie odzwierciedla tego co powiedzialem. Ja mowilem o tablicy baz danych, czyli

$this->db[] = new Database($bazaDanych);
DannyM
Powiedzmy, że dodam to do tablicy jak mi ma to pomóc?
Chyba przeceniasz moją wiedzę smile.gif
Jak mam to potem użyć wyprowadzić query facepalmxd.gif
nospor
No majac tablice korzystasz z jej dobrodziejstw..

zamiast taki potworkow, ktore nie dzialaja

$this->db.$count->query("YOUR QUERY");
$this->db.$count->query("YOUR QUERY");
$this->db.$count->query("YOUR QUERY");

robisz:

  1. foreach ($this->db as $db) {
  2. $db->query("YOUR QUERY");
  3. }

I juz
DannyM
Wyglada logicznie ale cos mi wykonanie nie dziala
Jesli mozesz zerknac

  1. // foreach tworzy tablice z polaczeniami do baz
  2. $bazaDanych[] = array(
  3. 'host' => 'localhost',
  4. 'username' => 'root',
  5. 'password' => 'root',
  6. 'db' => 'baza'
  7. );
  8.  
  9. // end
  10.  
  11. print_r($bazaDanych);
  12. $this->db1[] = new Database($bazaDanych);
  13.  
  14. foreach ($this->db1 as $db) {
  15. $db->query("UPDATE product SET price = '123' ");
  16. }
nospor
Czemu dla new Database przekazujesz tablice tablic? Zdaje sie tam masz przekazac konfiguracje dla danej bazy a nei dla wszystkich
DannyM
Myslalem, ze przekaze wszystkie polaczenia do innych baz. Rozumiem, ze mam przekazac jedna tablice?
nospor
Nie wiem co to robi
new Database
Zakladam, ze to tworzy obiekt jednej bazy danych i do konstruktora przekazujesz parametry polaczenia do tej bazy. Jesli tak, to tam masz wlasnie przekazac parametry dla tej jednej bazy danych

I nie zadne $this->db1 tylko $this->db

I potem
$this->db[] = new Database($bazaDanych1);
$this->db[] = new Database($bazaDanych2);
// .....
$this->db[] = new Database($bazaDanych100);
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.