Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Połączenie kilku baz w jedną
Forum PHP.pl > Forum > PHP
jastu
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ąć ?
ayeo
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
jastu
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
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.