Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/SQL] Pisanie sterownika i generowanie zapytań dla różnych baz danych
Forum PHP.pl > Forum > PHP
l0ud
Witam. Jeżeli temat bardziej nadaję się do działu 'bazy danych', to proszę o przeniesienie smile.gif


Mam zamiar napisać dość elastyczny skrypt, który w założeniach będzie mógł obsługiwać kilka typów baz danych. Dotychczas pracowałem tylko przy MySQL, a chciałbym wprowadzić również obsługę innych baz, np. PostgreSQL albo MS SQL (niekoniecznie). Moje pierwsze pytanie brzmi, jakie istnieją zasadnicze różnice pomiędzy składnią zapytań do tych baz (o ile istnieją?) oraz w sposobie łączenia się z tymi bazami w PHP?

Obsługą bazy będzie zajmowała się specjalna klasa do tego, nawiązująca połączenie za pomocą odpowiednich funkcji dla bazy. Niestety, nie wiem w jaki sposób generować zapytania? Zauważyłem, że np. w phpBB2 zapytania w gotowej postaci są po prostu wykonywane (w przypadku mysql), albo przerabiane przez preg_replace (w przypadku innych baz, np. postgres'a)... Przekształcenia te nie są jak patrzę bardzo istotne, więc chyba składnia do tych baz jest bardzo zbliżona?


Właściwie interesuje mnie odpowiedź na najistotniejsze pytanie: czy ogólna składnia zapytań do baz danych różni się na tyle, żeby starać się rozbić zapytanie do jak naprostszej postaci i później 'składać' przez odpowiednią klasę, czy po prostu przekazywać gotowe zapytania pod mysqł, a ew. w późniejszych sterownikach do innych baz robić 'hacki'?

Pozdrawiam smile.gif
pyro
Cytat(l0ud @ 31.03.2008, 22:47:20 ) *
Witam. Jeżeli temat bardziej nadaję się do działu 'bazy danych', to proszę o przeniesienie smile.gif


Mam zamiar napisać dość elastyczny skrypt, który w założeniach będzie mógł obsługiwać kilka typów baz danych. Dotychczas pracowałem tylko przy MySQL, a chciałbym wprowadzić również obsługę innych baz, np. PostgreSQL albo MS SQL (niekoniecznie). Moje pierwsze pytanie brzmi, jakie istnieją zasadnicze różnice pomiędzy składnią zapytań do tych baz (o ile istnieją?) oraz w sposobie łączenia się z tymi bazami w PHP?

Obsługą bazy będzie zajmowała się specjalna klasa do tego, nawiązująca połączenie za pomocą odpowiednich funkcji dla bazy. Niestety, nie wiem w jaki sposób generować zapytania? Zauważyłem, że np. w phpBB2 zapytania w gotowej postaci są po prostu wykonywane (w przypadku mysql), albo przerabiane przez preg_replace (w przypadku innych baz, np. postgres'a)... Przekształcenia te nie są jak patrzę bardzo istotne, więc chyba składnia do tych baz jest bardzo zbliżona?


Właściwie interesuje mnie odpowiedź na najistotniejsze pytanie: czy ogólna składnia zapytań do baz danych różni się na tyle, żeby starać się rozbić zapytanie do jak naprostszej postaci i później 'składać' przez odpowiednią klasę, czy po prostu przekazywać gotowe zapytania pod mysqł, a ew. w późniejszych sterownikach do innych baz robić 'hacki'?

Pozdrawiam smile.gif



Ogólna składnia zapytań jest dosyć podobna jednak różnice istnieją, wd. mnie dobrym rozwiązaniem jest użycie modułu PEAR:DB
l0ud
Ok, tak patrzę na to PEAR:DB. Cóż... z tego co widzę (a przynajmniej widzę to po przykładach zastosowania) nie pomoże mi to z generowaniem zapytań, a jedynie operowaniu z bazą. Tyle sam mogę osiągnąć ręcznie przez wczytywanie odpowiedniego sterownika do bazy z odpowiednimi metodami.

Póki co wpadłem na taki pomysł, aby zacząć od samego MySQL - napisać do niego sterownik mający za zadanie zapewnić podstawową komunikację z bazą oraz generować zapytania przez takie funkcję jak np. generalSelect(). Ew. stworzyć klasę zawierającą zbiór 'niestandardowych' zapytań do określonego typu bazy. Tak więc zdaje się, rozwiązanie jest dość podobne do tego z IPB.

Czy to jest dobry pomysł? smile.gif

Pozdrawiam
pyro
Cytat(l0ud @ 1.04.2008, 16:08:48 ) *
Ok, tak patrzę na to PEAR:DB. Cóż... z tego co widzę (a przynajmniej widzę to po przykładach zastosowania) nie pomoże mi to z generowaniem zapytań, a jedynie operowaniu z bazą. Tyle sam mogę osiągnąć ręcznie przez wczytywanie odpowiedniego sterownika do bazy z odpowiednimi metodami.

Póki co wpadłem na taki pomysł, aby zacząć od samego MySQL - napisać do niego sterownik mający za zadanie zapewnić podstawową komunikację z bazą oraz generować zapytania przez takie funkcję jak np. generalSelect(). Ew. stworzyć klasę zawierającą zbiór 'niestandardowych' zapytań do określonego typu bazy. Tak więc zdaje się, rozwiązanie jest dość podobne do tego z IPB.

Czy to jest dobry pomysł? smile.gif

Pozdrawiam


Pakiet PEAR:: DB jest ogólno-sql'owo-platformowym pakietem, który gwarantuje ci dzialanie na kazdej bazie sql ;/
l0ud
Tak wiem, trochę się zmieniło od czasu napisania tamtego posta. smile.gif Dzięki za naprowadzenie.
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.