Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dynamiczna podmiana nazwy polaczenia $this->{db}->query
DannyM
post 12.11.2018, 11:23:30
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
nospor
post 12.11.2018, 11:28:27
Post #2





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
DannyM
post 12.11.2018, 11:29:08
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 12.11.2018, 11:41:16
Post #4





Grupa: Zarejestrowani
Postów: 1 836
Pomógł: 225
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 12.11.2018, 12:13:12
Post #5





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
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);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
DannyM
post 12.11.2018, 12:24:32
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ę smile.gif
Jak mam to potem użyć wyprowadzić query facepalmxd.gif
Go to the top of the page
+Quote Post
nospor
post 12.11.2018, 12:30:05
Post #7





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
DannyM
post 12.11.2018, 14:49:37
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 12.11.2018, 15:14:46
Post #9





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
DannyM
post 12.11.2018, 15:19:04
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 12.11.2018, 15:22:05
Post #11





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
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);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 23:40