sql >> Databasteknik >  >> RDS >> Mysql

Varför är PHPs mysql_-funktioner utfasade?

Mysql-tillägget är gammalt och har funnits sedan PHP 2.0, släppt för 15 år sedan (!!); som är ett helt annat odjur än det moderna PHP som försöker avskaffa de dåliga metoderna från sitt förflutna. MySQL-tillägget är en mycket rå, lågnivåkoppling till MySQL som saknar många bekvämlighetsfunktioner och är därför svår att applicera korrekt på ett säkert sätt; det är därför dåligt för noobs. Många utvecklare förstår inte SQL-injektion och mysql API är tillräckligt skört för att göra det svårt att förhindra det, även om du är medveten om det. Den är full av globala tillstånd (till exempel implicit anslutning passerar), vilket gör det enkelt att skriva kod som är svår att underhålla. Eftersom det är gammalt kan det vara orimligt svårt att underhålla på PHP-kärnnivå.

Mysqli-tillägget är mycket nyare och fixar alla ovanstående problem. PDO är också ganska nytt och fixar alla dessa problem, plus mer.

På grund av dessa skäl* kommer mysql-tillägget att tas bort någon gång i framtiden. Den gjorde sitt jobb under sin storhetstid, ganska dåligt, men den gjorde det. Tiden har gått, bästa praxis har utvecklats, applikationer har blivit mer komplexa och kräver ett modernare API. mysql går i pension, lev med det.

Med tanke på allt detta finns det ingen anledning att fortsätta använda det förutom tröghet.

* Dessa är mina sunt förnuft sammanfattande skäl; för hela den officiella historien, titta här:https://wiki.php.net/rfc/mysql_deprecation

Urvalscitat från det dokumentet följer:



  1. GroupingError:ERROR:kolumnen måste visas i GROUP BY-satsen eller användas i en aggregerad funktion

  2. Logga QUERIES som inte använder INDEX - MySQL

  3. Hur man eliminerar icke-arbetstid i Oracle

  4. Meddela postgres ändringar i java-applikationen