sql >> Database >  >> RDS >> Mysql

Waarom zijn de mysql_-functies van PHP verouderd?

De mysql-extensie is oud en bestaat al sinds PHP 2.0, 15 jaar geleden uitgebracht (!!); wat een heel ander beest is dan de moderne PHP die de slechte praktijken uit zijn verleden probeert af te werpen. De mysql-extensie is een zeer ruwe, low-level connector naar MySQL die veel gemaksfuncties mist en daardoor moeilijk correct toe te passen is op een veilige manier; het is dus slecht voor noobs. Veel ontwikkelaars begrijpen SQL-injectie niet en de mysql-API is kwetsbaar genoeg om het moeilijk te maken om het te voorkomen, zelfs als je je ervan bewust bent. Het zit vol met globale status (impliciete verbinding die bijvoorbeeld doorgaat), wat het gemakkelijk maakt om code te schrijven die moeilijk te onderhouden is. Omdat het oud is, kan het onredelijk moeilijk zijn om het op het PHP-kernniveau te houden.

De mysqli-extensie is een stuk nieuwer en lost alle bovenstaande problemen op. PDO is ook vrij nieuw en lost ook al die problemen op, plus meer.

Om deze redenen* zal de mysql-extensie ergens in de toekomst worden verwijderd. Het deed zijn werk in zijn hoogtijdagen, nogal slecht, maar het deed het. De tijd is verstreken, best practices zijn geëvolueerd, applicaties zijn complexer geworden en vereisen een modernere API. mysql gaat met pensioen, leef ermee.

Gezien dit alles is er geen reden om het te blijven gebruiken, behalve voor traagheid.

* Dit zijn mijn gezond verstand samenvattende redenen; voor het hele officiële verhaal, kijk hier:https://wiki.php.net/rfc/mysql_deprecation

Keuzecitaten uit dat document volgen:



  1. Automatische weergave-update in MySql

  2. Hoe MySQL-databaseschema op GitHub opnemen?

  3. Fulltext zoeken met InnoDB in MySQL

  4. Multi_Curl met waarden uit de mysql-kolom