2013-07-18 8 views
5

Chcę przełączyć się z MySQL na MySQLi, ale mam bardzo dużą stronę internetową.Zmiana dużej strony z MySQL na MySQLi

Przeczytałem, że https://wikis.oracle.com/display/mysql/Converting+to+MySQLi może mi pomóc i czytam How could I change this mysql to mysqli?. Mówi, że mogłem zastąpić większość funkcji po prostu dodając "i" do funkcji, i że powinienem zacząć bughunting.

Ale moja strona jest bardzo złożona i duża, a sprawdzenie, czy wszystko działa, zajmie bardzo dużo czasu. A więc: jaki jest najlepszy sposób na przejście z MySQL na MySQLi na bardzo dużą stronę internetową?

Dzięki!

+0

nie jest to łatwy sposób. trzeba sprawdzić wszystkie skrypty i zastąpić połączenia. i przetestuj. – Aris

+0

czy masz testerów? – DevZer0

+0

Jakie są główne rzeczy, które się zmieniają? Tylko parametry i nazwa funkcji? I nie, nie mam wielu testerów ... – Jordy

Odpowiedz

4

Nie ma łatwej odpowiedzi na twoje pytanie, ponieważ praktycznie każdy prosty sposób na zrobienie tego wymagał zrobienia czegoś inaczej, gdy aplikacja została napisana.

Jeśli masz bezpośrednie połączenia z funkcjami mysql_ * w całym kodzie i bez warstwy abstrakcji bazy danych, w której wykonujesz zapytania za pomocą klasy pomocniczej lub funkcji, musisz edytować każde polecenie.

Nie można po prostu uciec z dodaniem I do poleceń jak mysql_query jak proceduralnie mysqli_query() wymaga pierwszy parametr będzie link do db gdzie z mysql_query() jeśli połączenie zostało wydane w ogóle, to był drugi parametr.

Zamiast tylko zmieniać mysql_query (...) do mysqli_query ($ link, .....), polecam, aby nie było lepszego czasu na umieszczenie warstwy abstrakcji db w miejscu. Tak więc użyj funkcji, np. Sql_query(), która faktycznie przetwarza twoje zapytania, więc w przyszłości, jeśli będziesz potrzebować zmienić DB ponownie, możesz po prostu zaktualizować komendy db w jednym pliku abstrakcji. W ten sposób, jeśli napiszesz funkcję owijającą mysqli_query, możesz po prostu zmienić nazwę mysql_query() na funkcję pomocniczą i pozwolić funkcji pomocniczej martwić się o umieszczenie tam odnośnika.

Mimo że to najprostszy sposób, że nie zwiąże parametry lub przygotować sprawozdanie, które jest głównym czynnikiem w zapobieganiu SQL injection Luki

Po zmianie wszystkie te polecenia musisz przetestować.

Jeśli nie masz pisemnych testów automatycznych, prawdopodobnie jest to dobry moment na rozpoczęcie pisania. Nawet jeśli będziesz musiał sprawdzić, czy każda zmiana zadziałała, jeśli zrobisz to za pomocą automatycznego testu, możesz uniknąć tego bólu w przyszłości.

+0

Jako początkujący programista z tym samym zadaniem, doceniam podział na to, co należy zrobić, ale jak zwykle, wiążę się również z krótkim terminem i brakuje mi czasu na naukę: jak działa warstwa abstrakcji; jak wykonywane są testy automatyczne (bardzo nowość w OOP). Jeśli masz dobrą dokumentację na ten temat, byłbym wdzięczny za to, ale najprawdopodobniej będę musiał zacząć zastępować wszystkie wywołania 'mysql_ *' od razu. Z góry dziękuję –

-1

robisz właściwy ruch, ponieważ funkcja mysql_ * jest przestarzała dla najnowszej wersji php. powinieneś pobrać konwerter do tego celu ... zobacz i pobierz ... mysql to mysqli

+1

To jest właściwie zły ruch. Taka wymiana mechaniczna nie doda nic do bezpieczeństwa. I PO ma już to łącze. –