Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Baza danych i cms
Forum PHP.pl > Forum > PHP
jwest
Jestem w lekkiej rozterce, mianowicie nie wiem w jaki sposób podejść do problemu komunikacji systemu CMS z bazą danych. Odpada pomysł natywnego sterowania zapytaniami do bazy MySQL bo co jeżeli będzie potrzeba postawienia na PostrageSQL? Ano właśnie... Do głowy przychodzą mi 3 rozwiązania mojego problemu:

1. Użycie wbudowanej w php klasy PDO
Jedyne co przemawia przeciw to tak naprawdę wydajność (nie wiem sam nie testowałem tylko czytałem na ten temat, mogę się mylić)

2. "Sterownik" oparty o uniwersalne metody klasy dla różnych typów danych
W zasadzie coś takiego już mam, ale czy powinienem z tego korzystać? Wygląda to mniej więcej tak:

-konstruktor łączy się z bazą, destruktor rozłącza, standart...
-zapytanie buduję np. tak:
  1. $db->select('tabela_z_danymi')->where('id','5')->limit(1)->e();

lub tak:
  1. $db->add('tabela_z_danymi', $tablica_zmiennych_do_wprowadzenia)->e();

Czy takie wytwór to dobry pomysł? Gorzej jest w takim przypadku z bardziej rozbudowanymi zapytaniami korzystającymi np. z funkcji matematycznych bazy danych.


3. Zbudowanie czegoś jak powyżej ale zastąpienie tego łańcucha metod zwykłym zapytaniem SQL np.:
  1. $db->query('SELECT * FROM tabela_z_danymi');

Czy nie ma jako takich różnic w poleceniach SQL?

Marzy mi się możliwość podmiany fragmentu kodu/pliku po którym będę miał pewność że cała aplikacja będzie działała bez względu na to do jakiej bazy danych się ją przypnie.

Czy mogę prosić o wskazówki doświadczonych programistów PHP?
LBO
Jest jeszcze 4-ta możliwość. Gotowe rozwiązania (Doctrine lub Propel).
Pilsener
Ja bym radził wykorzystanie gotowych sterowników a co do 3 to musisz mieć możliwość zarówno budowania zapytań w sposób:
  1. $db->add('tabela_z_danymi', $tablica_zmiennych_do_wprowadzenia)->e();


Jak i wprowadzania zwykłych zapytań sql. Popatrz, jak robią to popularne frameworki (Zend, Symfony)
nemis
W przypadku uzywania PDO, zapytania sa modyfikowane przed puszczeniem do serwera. Proponuje zebys przyjal ostatnie rozwiazanie w poleczniu z PDO.
Osobiscie korzystam jednak z ORM.
sebastiankozub
a ja bym radził rozpocząć od zwykłego wysyłania zayptań przez query() a potem w miare rozwoju samo Ci się wyjaśni czego potrzebujesz i zbudujesz sobie swoją klasę, albo i nie bo z tego co widzę Twoja nie rożni się zbytnio od dostępnej np: w Zend, a znając życie wszystkich funkcji, które ma Zend nie zaimplementowałeś...
jwest
Cytat(sebastiankozub @ 28.04.2010, 03:01:37 ) *
a ja bym radził rozpocząć od zwykłego wysyłania zayptań przez query() a potem w miare rozwoju samo Ci się wyjaśni czego potrzebujesz i zbudujesz sobie swoją klasę, albo i nie bo z tego co widzę Twoja nie rożni się zbytnio od dostępnej np: w Zend, a znając życie wszystkich funkcji, które ma Zend nie zaimplementowałeś...


No na pewno nie udało mi się zaimplementować wszystkiego smile.gif dodałem tylko te opcje z których korzystam jeżeli miałbym używać czegoś nowego dodałbym kolejną metodę do klasy.

Czy korzystając z zapytań SQL są jakieś różnice między budowaniem zapytań np. dla bazy MySQL a PgSQL? Bo niby sql to sql, ale nie mam doświadczenia
Riklaunim
Cytat(jwest @ 28.04.2010, 08:43:08 ) *
Czy korzystając z zapytań SQL są jakieś różnice między budowaniem zapytań np. dla bazy MySQL a PgSQL? Bo niby sql to sql, ale nie mam doświadczenia

Są różnice w składni zapytań, czy w definicjach tabel. Zazwyczaj nieduże i proste SELECT/UPDATE/DELETE powinny być zgodne między MySQL, SQLite czy Postgresem.
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.