Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wiele baz danych w jednej aplikacji.
Forum PHP.pl > Forum > Przedszkole
-Darko-
Tak się zastanawiam jak rozdzielić używanie kilku silników w jednej aplikacji.

Zakładając że np. podczas świeżej jej instalacji wybieram mysql.
Używam PDO i... jak rozdzielić kod dla mysql od innej np. postresql?

  1. $pdo = new PDO;
  2.  
  3. if($dbEngine = 'mysql')
  4. {
  5. // tu zapytanie dla mysql
  6. }
  7. elseif($dbEngine = 'inna')
  8. {
  9. //tu zapytanie dla innej bazy jak taka została wybrana przy instalacji.
  10. }


Jak dokonywać wyboru? I aby to było łatwe w organizacji, używaniu przy czymś bardziej rozbudowanym.
Sephirus
Najprościej pod tym kątem to chyba robić podwójne modele (jeśli zapytania się będą aż tak różniły). Oba modele powinny mieć takie same metody. Wiedząc jakiego typu bazę mamy wybraną ładujemy odpowiedni model i dalej pracujemy na nim. Dzięki temu niezależnie jaki będzie wybrany model reszta aplikacji będzie korzystała z tego modelu dokładnie tak samo jak z innego.

mar1aczi
PDO nie jest przypadkiem po to, aby była przenośność między różnymi silnikami bazy danych?
Zmieni Ci się tylko, w zależności od silnika, polecenia łączenia się z bazą. Zajrzyj do manuala PDO.
Sephirus
@UP w teorii masz rację, jednak nie wiem czy pracowałeś kiedyś na MySQL i PostgreSQL? Bo zapytania same się różnią od siebie (oczywiście nie te najprostsze). Sam wybór drivera PDO to może być za mało.
mar1aczi
@Sephirus
W odniesieniu do składni dla PDO, zmieni się konstrukcja tworzenia, wykonywania zapytań? Wydaje mi się, że nie. Zmianie ulegnie natomiast sama konstrukcja funkcji na poziomie sql-a czyli dla "select" czy "insert"/"update".

@autor
Wykorzystując nazwę sterownika podawaną do pdo możesz oprogramować funkcje zaczynające się od przedrostka o tej nazwie.
Sephirus
@up no właśnie mi o to chodzi - a jeśli dobrze zrozumiałem autora to on chce mieć możliwość pracy na bazie MySQL lub PostgreeSQL zależnie od wyboru - musi więc gdzieś mieć zapisane zapytania pod MySQL i inne pod Postgresa - stąd propozycja dwóch modeli - PDO i wykorzystanie jego metod oczywiście będzie identyczne smile.gif
mar1aczi
Tak jest, o to samo mi chodziło smile.gif Mając oddzielne modele można "klientowi" oddać aplikację pod konkretny silnik bazy bez konieczności grzebania w kodzie. Ten argument stawia Twoje rozwiązanie korzystaniejsze od mojego sugerowanego z nazwami funkcji. Oddaję ukłon w Twoją stronę wink.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.