2016-02-25 24 views
5

Zaprojektowałem stronę internetową przed upływem 5 lat przy użyciu PHP MySQL i nadal działa dobrze bez żadnych problemów. Słyszałem, że MySQL jest oficjalnie przestarzałe od PHP 5.5 i zostało usunięte z PHP 7. Ponadto PHP oferuje trzy różne API do połączenia z MySQL (takie jak MySQL, MySQLi i PDO). Mój serwer sieciowy jest często aktualizowany.Czy muszę uaktualnić moją witrynę do PHP MySQLi lub PDO?

Zrozumiałem, muszę przejść na nowsze API, takie jak MySQLi lub PDO dla bezpieczeństwa. Teraz jestem zdezorientowany, czy wybrać MySQLi lub PDO. Ponadto, czy są dostępne jakieś opcje zgodności/migracji dla takiego przypadku?

+0

Jeśli chodzi o wybór MySQLi lub PDO jest oparty przede wszystkim na opiniach, z tym stwierdzeniem, uważam, że niektórzy twierdzą, że PDO jest najbezpieczniejszym z nich, ale nie wiem, czy to jest dokładne czy nie. Jeśli pochodzisz z mysql, wierzę, że MySQLi będzie łatwiejsze do zrozumienia. – Epodax

+0

Nie zalecamy aktualizowania wersji PHP ani wersji MySQL. Jeśli strona działa, pozwól jej działać. uaktualnienie wersji powinno być ręczne, a nie automatyczne. –

+1

Przewodnik o PDO, który chciałbym powiedzieć, jest oczywistym wyborem - https://phpdelusions.net/pdo – DTH

Odpowiedz

2

Odpowiedź jest dość prosta.

Jeśli, podobnie jak większość użytkowników PHP, użyjesz funkcji API bazy danych bezpośrednio w kodzie aplikacji, bez opakowania pośredniego, to PDO jest Twoim jedynym wyborem,, ponieważ jest to rodzaj opakowania, automatyzującego wiele operacje, które za pomocą mysqli muszą być wykonywane ręcznie.

Nie, nie ma opcji migracji, ponieważ bardzo podejście zmienia się dramatycznie: zamiast umieszczać zmienne bezpośrednio w zapytaniu, muszą one zostać zastąpione w zapytaniu specjalnymi znakami. Nie ma sposobu, aby zautomatyzować ten proces.

+0

ChNP to nie jedyny wybór. mysqli_ jest również wyborem. I pod pewnymi względami lepszy wybór, ponieważ jest bardziej porównywalny do mysql_. W zależności od tego, ile jest pożądane przepisanie, a nawet dozwolone, PDO może nie być nawet wykonalnym wyborem. – jmarkmurphy

+0

@jmarkmurphy inny nie można odczytać. Dlaczego nie jestem zaskoczony. –

+0

@jmarkmurphy Twój komentarz jest niezgodny z rzeczywistością. Nie możesz twierdzić, że 'mysqli' jest lepszy niż' PDO' jeśli: 1) 'mysqli' działa tylko z MySQL 2)' mysqli' ma bardziej złożony interfejs 3) Porównanie z 'mysql_' jest krokiem wstecz, nie naprzód - stąd nie, nie jest lepiej. Stwierdzenie, że "PDO" może nie być nawet wykonalnym wyborem, nie ma sensu, nie jest poparte jednym dowodowym dowodem i jest tylko twoją * opinią *. I wiesz, co mówią o opinii w obszarze, który opiera się na matematyce i logice? –

4

Pozwala przyjrzeć się obu tych rozszerzeń.

PDO

PDO jest baza danych neutralny - Wystarczy tylko nauczyć się jeden API do pracy z dziesiątkami databases

więc jeśli zdecydujesz się przenieść do innej bazy danych, jedyną rzeczą, którą będzie się zmieniać to DSN (nazwa źródła danych).

Obsługa obu nazw i "?" symbole zastępcze dla przygotowanych wyciągów.

Drupal używa ChNP.

mysqli

Z drugiej strony mysqli jest zaprojektowany specjalnie dla baz danych MySQL i jest zalecany przez MySQL. Mysqli działa z bazami danych MySQL i MariaDB.

Obsługa tylko "?" symbole zastępcze dla przygotowanych wyciągów.

Joomla używa mysqli

Wnioski

Istnieje wiele sprzecznych argumentów pogoda mysqli lub PDO przebiega szybciej. Zarówno Mysqli, jak i PDO używają tych samych podstawowych sterowników, aby uzyskać dostęp do bazy danych, dzięki czemu nie warto porównywać wydajności.

Tak więc nie ma wyraźnego zwycięzcy podczas pracy z Mysqli lub PDO. Ale załóżmy, że używasz Mysqli, a później chcesz użyć innej bazy danych, byłoby to trudne przejście.

Główną siłą PDO nad Mysqli są placeholder nazwy dla przygotowanych oświadczeń i dlatego wybrałem PDO przez Mysqli.

+0

Czy kiedykolwiek próbowałeś przenieść się do innej bazy danych poprzez zmianę "DNS"? –

+0

@ YourCommonSense, dzięki za wskazanie :) – user3284463

+0

Pytanie nie było głupie literówki, ale rzeczywiste doświadczenie z przełączania backend bazy danych za pomocą właśnie zmiany DSN. –

Powiązane problemy