Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> jeden skrypt wiele baz danych
szybki
post
Post #1





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


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ć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
rad11
post
Post #2





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


Moze byc fachowo to sie nazywa driver
Go to the top of the page
+Quote Post
szybki
post
Post #3





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


@up - tzn?
Go to the top of the page
+Quote Post
rad11
post
Post #4





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


To fachowo ustawianie w konfiguracji nazywa sie driver mysql, sqlite itd. sa to sterowniki db czyli drivery.

Ten post edytował rad11 20.01.2015, 15:57:38
Go to the top of the page
+Quote Post
szybki
post
Post #5





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


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.
Go to the top of the page
+Quote Post
rad11
post
Post #6





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


Ma sie to tak ze $cfg['type'] ma sie nijak do profesjonalnego nazewnictwa.
Go to the top of the page
+Quote Post
szybki
post
Post #7





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


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.
Go to the top of the page
+Quote Post
rad11
post
Post #8





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


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.  


Ten post edytował rad11 20.01.2015, 16:12:08
Go to the top of the page
+Quote Post
szybki
post
Post #9





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.06.2014

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


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.
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 Aktualny czas: 20.08.2025 - 18:52