Autor Zpráva
Shaim
Profil
Zdravím,

mysql_* bude od PHP 5.5 zastaralá, zajímá mě, jestli má smysl ještě stále využívat tuto "zastaralou" technologii? Nebo se při psaní nových aplikací přeorientovat. mysqli_* asi ne-e, když už, tak PDO kvůli podpoře více typů DB.

Co myslíte, v jakém horizontu bude toto reálné? Je mi jasné, že ten skok nebude tak rychlý, jelikož na zastaralém mysql běží 90% (odhad) aplikací.
Joker
Profil
Shaim:
(Možná na úvod poznámka pro některé čtenáře, zastaralé je jen Mysql rozšíření v PHP, ne MySQL databáze jako taková.)

mysql_* bude od PHP 5.5 zastaralá
Ne „bude“, ale „je“, PHP 5.5 už bylo vydáno, aktuální verze je 5.5.4.

Nebo se při psaní nových aplikací přeorientovat.
Přeorientovat, k tomu právě to označení „deprecated“ slouží, že by se daná věc neměla u nových aplikací používat.
Zechy
Profil
Úplně stejným stylem jako mysql_ se dá skrukturovaně použít mysqli_. Ovšem pokud chceš držet krok s dobou je lepší použít třídu MySQLi.
Jan Tvrdík
Profil
Nebo ještě lépe přestat používat vestavěné funkce a začít použít něco, co rozumně ošetřuje chyby a escapuje proměnné, např. dibi.
Actimel
Profil
Jan Tvrdík:
začít použít něco, co rozumně ošetřuje chyby a escapuje proměnné

Na to si může vystačit s prepared statements, které mysqli_* funkce umí a nebo je může použít v PDO, které je součástí PHP, takže se obejde bez jakékoli knihovny…
Jan Tvrdík
Profil
Actimel:
To není bohužel tak úplně pravda. Prepared statements jdou použít jenom na určité druhy dotazů. Např. pokud vím neumí escapovat SQL identifikátory a LIKE, nezvládají velmi užitečnou IN konstrukci apod.
Actimel
Profil
Jan Tvrdík:
O tom jaké omezení má mysqli co se týká prepared statements netuším, PDO jsem taky používal jen krátce, jinak používám nette database a momentálně se chci kouknout na doctrine…

Já třeba jsem takový, že pokud nemusím, tak cizí knihovny nepoužívám. Sám nevím přesně proč, možná ta radost, že si všechno udělám sám, ale to asi brzo přejde. Nicméně na menší věci si myslím, že na menší věci PDO postačí.
Jan Tvrdík
Profil
Actimel:
Nette\Database i Doctrine mají nad prepared statements napsaný vlastní SQL processor, který se snaží výše popsané problémy nějak řešit. Viz např. docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/data-retrieval-and-manipulation.html#list-of-parameters-conversion. Nicméně dibi je pro lidi, kteří byli zvyklí používat přímo mysql_ funkce, výrazně menší skok, než přejít na NDB nebo Doctrine.
Shaim
Profil
Děkuji za rady, rozhodoval jsem se mezi PDO a mysqli, nakonec jsem se přiklonil k DIBI. Velmi se mi líbí jednoduchost. Děkuji!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: