Uniwersalna biblioteka w PHP do obsługi różnych typów baz danych

Do napisania szkieletu tej biblioteki skłoniła mnie konieczność obróbki bazy danych MS SQL, a dokładnie potrzeba wylistowania zawartych w bazie tabel, nazw pól (kolumn) poszczególnych tabel (wraz z ich typami) oraz liczby rekordów w tabelach. O ile to ostatnie uzyskać można przy użyciu standardowego zapytania "SELECT COUNT(*) FROM tebela", to dla pozostałych zagadnień w PHP nie ma stosownych funkcji (są za to takie funkcje dla MySQL). Ponieważ oprogramowanie phpMyAdmin posiada bardziej rozbudowaną funkcjonalność niż oferują podstawowe funkcje bazodanowe w PHP, z ciekawości zacząłem analizować w jaki sposób jest to tam zrobione. Okazało się, że operuje on na bazie SCHEMA_NAME i tablicy information_schema (MySQL). Analizując bazy i tabele w MS SQL dowiedziałem się, że tutaj analogiczną bazą jest MASTER z tablicą sysdatabases oraz tablica sysobjects w każdej z baz.

Na początku napisałem stosowne funkcje do operowania na obu tych rodzajach bazach osobno, sprawdziłem i użyłem je w praktyce. Później w wolnym czasie wymyśliłem, że warto byłoby napisać bibliotekę, łączącą w sobie powyższą funkcjonalność oraz integrację standardowych funkcji (jak sql_connect, sql_close, sql_query, sql_result, sql_error, sql_num_rows, sql_fetch_row, sql_fetch_array, itd.), ale już na tyle ujednoliconą, by zmiana rodzaju bazy danych nie powodowała konieczności modyfikacji użytego kodu w PHP (poza oczywiście deklaracją parametrów konkretnej bazy danych - w tym jej rodzaju). Postanowiłem też rozszerzyć obsługiwane rodzaje baz również o PostgreSQL oraz SQLite jako o najbardziej popularne rodzaje baz danych.

Na razie napisałem kilka podstawowych uniwersalnych funkcji, sprawdziłem je na razie tylko na bazach MS SQL i MySQL. Z braku czasu i konieczności nie zająłem się dalszą częścią tego projektu. W przyszłości planuję dokończenie projektu i napisanie jakiegoś przykładowego programu, który będzie demonstrował działanie tej biblioteki.

Powrót do strony z wykazem projektów

Valid HTML 4.01 TransitionalValid CSS