Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jeden skrypt wiele baz danych
Forum PHP.pl > Forum > PHP
szybki
Załóżmy że mam skrypt i chce dać możliwość jego instalacji przy której bedzie możliwość wyboru bazy danych mysql lub postgresql, a jak wiadomo składniowo przy bardzie złożonych zapytaniach różnią się znacznie.

Jak to rozwiązać od strony programistycznej? Najprostsza rzecz jaka przychodzi mi do głowy to utoworzenie CFG ze zmienną TYPE, na bazie której bedę łaczył się z wybraną bazą:

  1. $cfg['type'] = 'mysql';
  2.  
  3. if('mysql' == $cfg['type'])
  4. {
  5. // zapytanie dla mysql
  6. }
  7. elseif('postgresql' == $cfg['type'])
  8. {
  9. // zapytanie dla postgresql
  10. }


Jednak nie wydaje mi się aby było to profesjonalne wink.gif chyba że najprostsze zastosowania są najlepsze. Jak to rozwiązujecie u siebie, ewentualnie jak to powinno się robić?
rad11
Moze byc fachowo to sie nazywa driver
szybki
@up - tzn?
rad11
To fachowo ustawianie w konfiguracji nazywa sie driver mysql, sqlite itd. sa to sterowniki db czyli drivery.
szybki
Ale co to ma do tematu? Pokaż jakiś przykład. W Pdo deklarujesz "driver" na wejściu w konstruktorze, ale ni jak ma sie to do pytania które zadałem.
rad11
Ma sie to tak ze $cfg['type'] ma sie nijak do profesjonalnego nazewnictwa.
szybki
Cytat(rad11 @ 20.01.2015, 15:58:37 ) *
Ma sie to tak ze $cfg['type'] ma sie nijak do profesjonalnego nazewnictwa.


To pokaż jakiś przykład, bo piszesz już kolejny post o niczym.
rad11
Wydaje mi sie ze wytarczy jak ustawisz odpowiedni konstkruktor przy pomocy danej z configu czyli:
  1.  
  2. $cfg['driver'] = 'mysql';
  3.  
  4. if($cfg['driver'] == 'mysql')
  5. {
  6. // zapytanie dla mysql
  7. $dbh = new PDO('mysql:host=$host;dbname=$dbname', $username, $password );
  8. }
  9. elseif($cfg['driver'] == 'pgsql')
  10. {
  11. // zapytanie dla postgresql
  12. $dbh = new PDO("pgsql:dbname=$dbname;host=$host", $username, $password );
  13. }
  14.  
szybki
I czym Twój sposób różni się od mojego? To oczywiste że wysyłasz różne dane dla różnych baz. Tu chodzi o to czy takie zastosowanie jest właściwe i jedyne czy nie.
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.