2013-09-06 12 views
7

Przeprowadzam migrację mojej aplikacji internetowej z MySQL do bazy danych SQLite. Dowiedziałem się, że istnieją dwa rozszerzenia PHP do komunikacji z sqlite: php_sqlite3.dll i php_pdo_sqlite.dll.Jaka jest różnica między sqlite3 a pdo_sqlite

Jakie rozszerzenie jest lepsze? Lub inne pytanie: jakie są podstawowe różnice między tymi rozszerzeniami?

+1

php_sqlite3 to bezpośredni interfejs sqlite, w zasadzie odpowiednik sqlite dla php_mysql, który udostępnia funkcje mysql _ *(). pdo_sqlite pozwala PDO używać sqlite. –

Odpowiedz

15

PDO to otoki dla połączeń z bazami danych w PHP. Został zaprojektowany, aby objąć funkcje oferowane przez większość systemów zarządzania bazami danych (MySQL, PostgreSQL ...) Tak więc wywołania funkcji są takie same bez względu na to, z którego DMBS korzysta. Zobacz http://php.net/manual/en/book.pdo.php. php_pdo_sqlite.dll umożliwia korzystanie z interfejsu PDO w celu uzyskania dostępu do bazy danych SQLite.

Inna biblioteka (php_sqlite3.dll) to własny interfejs z różnymi wywołaniami funkcji. Każdy kod, który z tego korzysta, będzie miał dostęp tylko do bazy danych SQLite. http://php.net/manual/en/book.sqlite3.php

Może się okazać, że PDO nie jest idealnie dopasowany do funkcjonalności SQLite3. To znaczy SQLite3 może oferować rzeczy niedostępne poprzez PDO lub PDO posiada funkcje, które nic nie robią, ponieważ SQLite3 nie może ich obsługiwać.

Zaletą PDO jest to, że jeśli w przyszłości chcesz się ponownie przełączać (przełączasz raz, aby móc zrobić to ponownie), nie będziesz musiał zmieniać wielu kodów. Jeśli utrzymasz swój kod SQL dość ogólny, będziesz musiał po prostu zmienić instrukcję połączenia.

+0

Czy istnieje sposób, aby upewnić się, że używasz rozszerzenia sqlite3, a nie PDO? –

+1

Tak, używają zupełnie różnych klas, więc kod przy użyciu pdo wywoła 'nowy PDO (...)' i kod używając sqlite3 twój kod wywoła 'nowy SQLite3 (...)' –