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

Dlaczego funkcje mysql_ PHP są przestarzałe?

Rozszerzenie mysql jest stare i istnieje od PHP 2.0, wydanego 15 lat temu (!!); który jest zdecydowanie inną bestią niż współczesny PHP, który próbuje pozbyć się złych praktyk z przeszłości. Rozszerzenie mysql jest bardzo surowym, niskopoziomowym łącznikiem do MySQL, który nie ma wielu wygodnych funkcji i przez to jest trudny do zastosowania poprawnie w bezpieczny sposób; dlatego jest to złe dla noobów. Wielu programistów nie rozumie wstrzykiwania SQL, a API mysql jest na tyle delikatne, że trudno jest temu zapobiec, nawet jeśli jesteś tego świadomy. Jest pełen globalnego stanu (np. niejawne przekazywanie połączenia), co ułatwia pisanie kodu, który jest trudny do utrzymania. Ponieważ jest stary, może być nierozsądnie trudny do utrzymania na podstawowym poziomie PHP.

Rozszerzenie mysqli jest dużo nowsze i naprawia wszystkie powyższe problemy. PDO jest również dość nowy i rozwiązuje wszystkie te problemy, a także wiele innych.

Z tych powodów* rozszerzenie mysql zostanie usunięte w przyszłości. W czasach swojej świetności wykonał swoją pracę, raczej kiepsko, ale wykonał to. Czas minął, najlepsze praktyki ewoluowały, aplikacje stały się bardziej złożone i wymagają nowocześniejszego API. mysql jest na emeryturze, żyj z nim.

Biorąc to wszystko pod uwagę, nie ma powodu aby nadal go używać, z wyjątkiem bezwładności.

* To są moje zdroworozsądkowe powody podsumowujące; całą oficjalną historię znajdziesz tutaj:https://wiki.php.net/rfc/mysql_deprecation

Oto cytaty z tego dokumentu:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. rake db:create generowane, jeśli ustawisz zestaw znaków ręcznie, upewnij się, że masz pasujący błąd sortowania

  2. SELECT TOP błąd

  3. Sprawianie, że ActiveRecord / Rails używa rzeczywistych kolumn mysql TIMESTAMP

  4. Czy istnieje mechanizm wyłączający wstawianie do stołu?

  5. Błąd migracji rzemieślnika php:podano nazwę węzła lub nazwę serwera lub nie znamy