sql >> Databáze >  >> RDS >> Mysql

Proč jsou funkce mysql_ PHP zastaralé?

Rozšíření mysql je prastaré a existuje již od PHP 2.0, vydaného před 15 lety (!!); což je rozhodně jiná bestie než moderní PHP, které se snaží zbavit špatných praktik své minulosti. Rozšíření mysql je velmi hrubý, nízkoúrovňový konektor k MySQL, který postrádá mnoho praktických funkcí, a proto je obtížné jej správně použít bezpečným způsobem; je to tedy špatné pro nooby. Mnoho vývojářů nerozumí SQL injection a mysql API je natolik křehké, že je těžké tomu zabránit, i když o tom víte. Je plný globálního stavu (například předávání implicitního připojení), což usnadňuje psaní kódu, který se obtížně udržuje. Vzhledem k tomu, že je starý, může být nepřiměřeně obtížné jej udržovat na úrovni jádra PHP.

Rozšíření mysqli je mnohem novější a opravuje všechny výše uvedené problémy. PDO je také poměrně nový a také opravuje všechny tyto problémy a navíc.

Z těchto důvodů* bude rozšíření mysql někdy v budoucnu odstraněno. V dobách největší slávy to dělalo svou práci dost špatně, ale zvládlo to. Doba pokročila, osvědčené postupy se vyvinuly, aplikace se staly složitějšími a vyžadují modernější API. mysql se vyřazuje, žijte s ním.

Vzhledem k tomu všemu není žádný důvod abyste jej mohli nadále používat s výjimkou setrvačnosti.

* Toto jsou souhrnné důvody pro zdravý rozum; celý oficiální příběh naleznete zde:https://wiki.php.net/rfc/mysql_deprecation

Následují vybrané citace z tohoto dokumentu:



  1. Oracle:'=ANY()' vs. 'IN ()'

  2. Homebrew postgres zlomený

  3. čtení z MySQL je rychlejší nebo čtení ze souboru je rychlejší?

  4. Odhad spojení SQL Server pomocí hrubého zarovnání histogramu