Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dynamiczna podmiana nazwy polaczenia $this->{db}->query
DannyM
post
Post #1





Grupa: Zarejestrowani
Postów: 507
Pomógł: 2
Dołączył: 30.10.2003
Skąd: Poznań

Ostrzeżenie: (10%)
X----


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. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Problem z OOP ma sredni zwiazek. Przenosze

ps: czemu z ->db nie zrobisz poprostu tablicy baz? To jest najbardziej naturalne rozwiazanie tutaj
Go to the top of the page
+Quote Post
DannyM
post
Post #3





Grupa: Zarejestrowani
Postów: 507
Pomógł: 2
Dołączył: 30.10.2003
Skąd: Poznań

Ostrzeżenie: (10%)
X----


A mozesz jakis przyklad?
Dziekuje
Go to the top of the page
+Quote Post
Tomplus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 884
Pomógł: 231
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




@Tomplus twoj kod nie odzwierciedla tego co powiedzialem. Ja mowilem o tablicy baz danych, czyli

$this->db[] = new Database($bazaDanych);
Go to the top of the page
+Quote Post
DannyM
post
Post #6





Grupa: Zarejestrowani
Postów: 507
Pomógł: 2
Dołączył: 30.10.2003
Skąd: Poznań

Ostrzeżenie: (10%)
X----


Powiedzmy, że dodam to do tablicy jak mi ma to pomóc?
Chyba przeceniasz moją wiedzę (IMG:style_emoticons/default/smile.gif)
Jak mam to potem użyć wyprowadzić query (IMG:style_emoticons/default/facepalmxd.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
DannyM
post
Post #8





Grupa: Zarejestrowani
Postów: 507
Pomógł: 2
Dołączył: 30.10.2003
Skąd: Poznań

Ostrzeżenie: (10%)
X----


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. }
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Czemu dla new Database przekazujesz tablice tablic? Zdaje sie tam masz przekazac konfiguracje dla danej bazy a nei dla wszystkich
Go to the top of the page
+Quote Post
DannyM
post
Post #10





Grupa: Zarejestrowani
Postów: 507
Pomógł: 2
Dołączył: 30.10.2003
Skąd: Poznań

Ostrzeżenie: (10%)
X----


Myslalem, ze przekaze wszystkie polaczenia do innych baz. Rozumiem, ze mam przekazac jedna tablice?
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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);
Go to the top of the page
+Quote Post

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: 6.10.2025 - 02:18