Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Połączenie kilku baz w jedną, po stronie php
jastu
post 26.11.2007, 12:09:14
Post #1





Grupa: Zarejestrowani
Postów: 382
Pomógł: 0
Dołączył: 29.11.2005
Skąd: :jestem();

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


Witam,
może temat niezrozumiały ale juz tłumaczę. Potrzebuję mieć oddzielną bazę na informacje o użytkownikach (przechowywane oddzielnie), a pozostale aplikacje pracujących na oddzielnych bazach wykorzystywałyby te informacje (przez co byłoby możliwe dodawanie oddzielnych baz dlakażdej aplikacji)

Nie mogę korzystać w tym przypadku z zapytań które zawierają nazwy baz w SQL. Często chodzi o pobranie z bazy użytkowników czegoś wiecej niż ID usera (które jest wykorzystywane do zapytań SQL), lub potrzeba wykonać jakieś złączenie z tabelą użytkowników.

Można coś takiego osiągnąć ?


--------------------
Powyższy post wyraża jedynie opinię autora w dniu dzisiejszym. Nie może on służyć przeciwko niemu w dniu jutrzejszym. Ponadto autor zastrzega sobie prawo zmiany poglądów, bez podawania przyczyny.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
ayeo
post 26.11.2007, 12:53:34
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Zrób sobie klase DataBase. Zrób dodatkowo jakąś kolekcję (może być prosta klasa z tablicą statyczną i metodami dostępowymi) obiektów typu DataBase, z metodą statyczną getDB() i przekazuj nazwę bazy do tej metody.

$userBD = DataBaseCollection::getDB("User");

Klasa DataBaseCollection sprawdzi czy instancja danej bazy została wcześniej stworzona i jeśli tak przekaże referencję do odpowiedniego obiektu, a jeśli nie to ją stworzy i zwróci.
Potem używasz to mniej więcej tak:

$userDB->sql("SELECT * FROM costam WHERE id = 1");

Złączenie jest możliwe chyba:
  1. <?php
  2. $databaseConnection = mysql_connect("host", "user", "password")
  3. or die ("I can't connect to database1: " . mysql_error()); 
  4.  
  5. $databaseConnection2 = mysql_connect("host", "user", "password")
  6. or die ("I can't connect to database2: " . mysql_error()); 
  7.  
  8.  
  9. $query = "SELECT DB1.Tbl1.Field1, DB2.Tbl2.Field2
  10. FROM DB1.Tbl1
  11. JOIN DB2.Tbl2 ON DB1.Tb1.Field1 = DB2.Tbl2.Field2"; 
  12.  
  13. $result = mysql_query($query,$databaseConnection)
  14. or die ("Query failed on connection 1: " . mysql_error());
  15. $result2 = mysql_query($query,$databaseConnection2)
  16. or die ("Query failed on connection 2: " . mysql_error());
  17. ?>


Znalazłem jeszcze takie coś, bardziej przejrzyste smile.gif
Kod
SELECT database1.sharedUsers.*, database2.userTable.*
FROM database1.sharedUsers
LEFT JOIN database2.userTable.userID ON database1.sharedUsers.userID


Ten post edytował ayeo 26.11.2007, 13:29:07


--------------------
Go to the top of the page
+Quote Post
jastu
post 26.11.2007, 14:19:08
Post #3





Grupa: Zarejestrowani
Postów: 382
Pomógł: 0
Dołączył: 29.11.2005
Skąd: :jestem();

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


Kod
Nie mogę korzystać w tym przypadku z zapytań które zawierają nazwy baz w SQL


To musiałaby być klasa która będzie reprezentowała bazę danych, ale zapytania każda z tych klas musiałaby wykonaywać odpowiednio dla swojej bazy, a dopiero po stronie php wykonywane byłyby proste złączenia.

Jakoś tak to widzę worriedsmiley.gif


--------------------
Powyższy post wyraża jedynie opinię autora w dniu dzisiejszym. Nie może on służyć przeciwko niemu w dniu jutrzejszym. Ponadto autor zastrzega sobie prawo zmiany poglądów, bez podawania przyczyny.
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: 18.07.2025 - 01:20