Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Rozszerzenie mysql jest przestarzałe i zostanie usunięte w przyszłości:zamiast tego użyj mysqli lub PDO

  1. Dlaczego tak się dzieje?

    Cały ext/mysql Rozszerzenie PHP, które udostępnia wszystkie funkcje o nazwie z przedrostkiem mysql_ , został oficjalnie przestarzały w PHP w wersji 5.5.0 i usunięte w PHP v7 .

    Został pierwotnie wprowadzony w PHP v2.0 (listopad 1997) dla MySQL v3.20 i od 2006 r. nie dodano żadnych nowych funkcji. W połączeniu z brakiem nowych funkcji są trudności w utrzymaniu tak starego kodu pośród złożonych luk w zabezpieczeniach.

    Podręcznik zawiera ostrzeżenia przed jego użyciem w nowym kodzie od czerwca 2011 roku.

  2. Jak mogę to naprawić?

    Jak sugeruje komunikat o błędzie, istnieją dwa inne rozszerzenia MySQL, które możesz rozważyć:MySQLi i PDO_MySQL , z których każdy może być użyty zamiast ext/mysql . Oba są w rdzeniu PHP od wersji 5.0, więc jeśli używasz wersji, która zgłasza te błędy, możesz prawie na pewno zacząć ich używać od razu — tj. bez żadnego wysiłku instalacyjnego.

    Różnią się nieco, ale oferują szereg zalet w porównaniu ze starym rozszerzeniem, w tym obsługę API dla transakcji, procedur składowanych i przygotowanych instrukcji (zapewniając w ten sposób najlepszy sposób pokonać ataki wstrzykujące SQL ). Programista PHP Ulf Wendel napisał dokładne porównanie funkcje .

    Hashphp.org ma doskonały samouczek dotyczący migracji z ext/mysql do ChNP .

  3. Rozumiem, że można pominąć błędy zaniechania, ustawiając error_reporting w php.ini aby wykluczyć E_DEPRECATED :

    error_reporting = E_ALL ^ E_DEPRECATED
    

    Co się stanie, jeśli to zrobię?

    Tak, możliwe jest pominięcie takich komunikatów o błędach i kontynuowanie używania starego ext/mysql na razie przedłużenie. Ale naprawdę nie powinieneś tego robić —to ostatnie ostrzeżenie od programistów, że rozszerzenie może nie być dołączone do przyszłych wersji PHP (w rzeczywistości, jak już wspomniano, zostało usunięte z PHP v7). Zamiast tego skorzystaj z okazji, aby przeprowadzić migrację aplikacji teraz , zanim będzie za późno.

    Pamiętaj też, że ta technika wyłączy wszystkie E_DEPRECATED wiadomości, nie tylko te związane z ext/mysql rozszerzenie:dlatego możesz być nieświadomy innych nadchodzących zmian w PHP, które wpłyną na kod Twojej aplikacji. Możliwe jest oczywiście tylko pominięcie błędów, które pojawiają się w danym wyrażeniu za pomocą operator kontroli błędów -tj. poprzedzenie odpowiedniej linii znakiem @ —jednak spowoduje to wstrzymanie wszystkich błędy wywołane przez to wyrażenie, nie tylko E_DEPRECATED jedynki.

Co powinieneś zrobić?

  • Rozpoczynasz nowy projekt.

    Nie ma absolutnie żadnego powodu używać ext/mysql —wybierz jedno z innych, bardziej nowoczesnych rozszerzeń i czerp korzyści z oferowanych przez nie korzyści.

  • Masz (własną) starszą bazę kodu, która obecnie zależy od ext/mysql .

    Rozsądnie byłoby przeprowadzić testy regresji:naprawdę nie powinieneś zmieniać niczego (zwłaszcza aktualizacja PHP), dopóki nie zidentyfikujesz wszystkich potencjalnych obszarów wpływu, zaplanujesz wokół każdego z nich, a następnie dokładnie przetestujesz swoje rozwiązanie w środowisku przejściowym.

    • Postępując zgodnie z dobrą praktyką kodowania, Twoja aplikacja została opracowana w sposób luźno zintegrowany/modułowy, a wszystkie metody dostępu do bazy danych są zamknięte w jednym miejscu, które można łatwo wymienić na jedno z nowych rozszerzeń.

      Poświęć pół godziny na przepisanie tego modułu, aby użyć jednego z innych, bardziej nowoczesnych rozszerzeń; dokładnie przetestuj. Możesz później wprowadzić dalsze udoskonalenia, aby czerpać korzyści z oferowanych przez nie korzyści.

    • Metody dostępu do bazy danych są rozproszone po całym miejscu i nie można ich łatwo wymienić na jedno z nowych rozszerzeń.

      Zastanów się, czy naprawdę musisz w tej chwili uaktualnić do PHP v5.5.

      Powinieneś zacząć planować zastąpienie ext/mysql z jednym z innych, bardziej nowoczesnych rozszerzeń, abyś mógł czerpać korzyści z oferowanych przez nie korzyści; możesz również użyć tego jako okazji do refaktoryzacji metod dostępu do bazy danych w bardziej modułową strukturę.

      Jeśli jednak masz pilne Jeśli potrzebujesz zaktualizować PHP od razu, możesz rozważyć na razie pominięcie błędów przestarzałych:ale najpierw upewnij się, że zidentyfikowałeś wszelkie inne błędy przestarzałe, które również są zgłaszane.

  • Korzystasz z projektu innej firmy, który zależy od ext/mysql .

    Zastanów się, czy naprawdę musisz w tej chwili uaktualnić do PHP v5.5.

    Sprawdź, czy deweloper udostępnił jakieś poprawki, obejścia lub wskazówki dotyczące tego konkretnego problemu; lub, jeśli nie, naciskaj ich, aby to zrobili, zwracając im uwagę na tę sprawę. Jeśli masz pilne Jeśli potrzebujesz zaktualizować PHP od razu, możesz rozważyć na razie pominięcie błędów przestarzałych:ale najpierw upewnij się, że zidentyfikowałeś wszelkie inne błędy przestarzałe, które również są zgłaszane.

    Wykonanie testów regresji jest absolutnie niezbędne.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pojedyncza ustalona tabela z wieloma kolumnami vs elastyczne tabele abstrakcyjne

  2. Pokaż wartości z tabeli bazy danych MySQL w tabeli HTML na stronie internetowej

  3. Co to znaczy uciec przed napisem?

  4. Jaki jest odpowiednik DATALENGTH() w MySQL?

  5. MySQL JOIN z LIMIT 1 na połączonym stole