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

Rozšíření mysql je zastaralé a bude v budoucnu odstraněno:použijte místo něj mysqli nebo PDO

  1. Proč se to děje?

    Celý ext/mysql Rozšíření PHP, které poskytuje všechny funkce pojmenované s předponou mysql_ , byl oficiálně ukončen v PHP v5.5.0 a odstraněno v PHP v7 .

    Původně byl představen v PHP v2.0 (listopad 1997) pro MySQL v3.20 a od roku 2006 nebyly přidány žádné nové funkce. Spolu s nedostatkem nových funkcí jsou potíže s udržováním takového starého kódu uprostřed složitých bezpečnostních zranitelností.

    Manuál obsahuje varování před jeho použitím v novém kódu od června 2011.

  2. Jak to mohu opravit?

    Jak naznačuje chybová zpráva, existují dvě další rozšíření MySQL, která můžete zvážit:MySQLi a PDO_MySQL , z nichž obě lze použít místo ext/mysql . Oba jsou v jádru PHP od verze 5.0, takže pokud používáte verzi, která hází tyto chyby zavržení, můžete je téměř jistě rovnou začít používat – tzn. bez jakékoli námahy při instalaci.

    Mírně se liší, ale nabízejí řadu výhod oproti starému rozšíření, včetně podpory API pro transakce, uložené procedury a připravené výpisy (čímž poskytují nejlepší způsob porazit útoky SQL injection ). PHP vývojář Ulf Wendel napsal důkladné srovnání funkce .

    Hashphp.org má výborný návod na migraci z ext/mysql na CHOP .

  3. Chápu, že je možné potlačit chyby při ukončení podpory nastavením error_reporting v php.ini vyloučit E_DEPRECATED :

    error_reporting = E_ALL ^ E_DEPRECATED
    

    Co se stane, když to udělám?

    Ano, je možné takové chybové zprávy potlačit a nadále používat starý ext/mysql prozatím prodloužení. Ale tohle byste opravdu neměli dělat —toto je poslední varování od vývojářů, že rozšíření nemusí být součástí budoucích verzí PHP (jak již bylo řečeno, bylo odstraněno z PHP v7). Místo toho byste měli využít této příležitosti k migraci své aplikace teď , než bude příliš pozdě.

    Všimněte si také, že tato technika potlačí vše E_DEPRECATED zprávy, nejen ty, které mají co do činění s ext/mysql rozšíření:proto možná nevíte o dalších nadcházejících změnách PHP, které by ovlivnily kód vaší aplikace. Je samozřejmě možné pouze potlačit chyby, které vzniknou u sporného výrazu, pomocí PHP operátor kontroly chyb -tj. přidáním @ před příslušný řádek —to však potlačí vše chyby vyvolané tímto výrazem, nejen E_DEPRECATED jedničky.

Co byste měli udělat?

  • Zahajujete nový projekt.

    Neexistuje absolutně žádný důvod použít ext/mysql —vyberte si místo toho jedno z jiných, modernějších rozšíření a získejte odměny za výhody, které nabízejí.

  • Máte (svou vlastní) starší kódovou základnu, která aktuálně závisí na ext/mysql .

    Bylo by moudré provést regresní testování:opravdu byste neměli nic měnit (zejména upgrade PHP), dokud neidentifikujete všechny potenciální oblasti dopadu, naplánujete kolem každé z nich a poté své řešení důkladně otestujete ve zkušebním prostředí.

    • V souladu s osvědčenými postupy kódování byla vaše aplikace vyvinuta volně integrovaným/modulárním způsobem a všechny metody přístupu k databázi jsou samostatné na jednom místě, které lze snadno vyměnit za jedno z nových rozšíření.

      Věnujte půl hodiny přepisování tohoto modulu, abyste mohli používat jedno z dalších, modernějších rozšíření; důkladně otestovat. Později můžete zavést další vylepšení, abyste mohli využívat výhod, které nabízejí.

    • Metody přístupu k databázi jsou roztroušeny po celém místě a nelze je snadno vyměnit za jedno z nových rozšíření.

      Zvažte, zda v tuto chvíli opravdu potřebujete upgradovat na PHP v5.5.

      Měli byste začít plánovat nahrazení ext/mysql s jedním z dalších modernějších rozšíření, abyste mohli sklízet plody výhod, které nabízejí; můžete jej také využít jako příležitost k přeměně metod přístupu k databázi do modulárnější struktury.

      Pokud však máte urgentní potřebujete okamžitě upgradovat PHP, můžete prozatím zvážit potlačení chyb při ukončení podpory:ale nejprve se ujistěte, že identifikujete všechny další chyby při ukončení podpory, které jsou také vyvolány.

  • Používáte projekt třetí strany, který závisí na ext/mysql .

    Zvažte, zda v tuto chvíli opravdu potřebujete upgradovat na PHP v5.5.

    Zkontrolujte, zda vývojář nevydal nějaké opravy, zástupná řešení nebo pokyny týkající se tohoto konkrétního problému; nebo pokud ne, donuťte je, aby tak učinili tím, že je na tuto záležitost upozorníte. Pokud máte naléhavou potřebujete okamžitě upgradovat PHP, můžete prozatím zvážit potlačení chyb při ukončení podpory:ale nejprve se ujistěte, že identifikujete všechny další chyby při ukončení podpory, které jsou také vyvolány.

    Je naprosto nezbytné provést regresní testování.




  1. Pochopení aliasů sloupců ve výběrovém dotazu na serveru SQL - SQL Server / výukový program TSQL, část 115

  2. Získávání výsledků mezi dvěma daty v PostgreSQL

  3. Evoluce a budoucnost Microsoft Access

  4. Změnit typ pole varchar na celé číslo:nelze automaticky přetypovat na typ celé číslo