Ten scénář má vážné problémy, které narušují dohodu. Nebude to fungovat pro žádnou jinou než nejtriviálnější databázi.
- Hodnoty NULL nejsou podporovány.
- Znakové sady se neberou v úvahu.
- Názvy tabulek nejsou odděleny.
- Jsou podporovány pouze tabulky – nikoli pohledy, uložené procedury, spouštěče, funkce atd.
addslashes() není bezpečné pro znakovou sadu
.mysql_query()
předběžně načte vše řádků z tabulky, takže pokud zadáte dotaz na tabulku s miliony řádků, překročíte limit paměti PHP. Použijtemysql_unbuffered_query()
namísto. Při druhém zamyšlení vidím, že shromažďujete veškerý výstup v $return, takže je to diskutabilní.- Vaše potlačení chyb pomocí
@
operátor je špatná praxe. Zkontrolujte, zda nedošlo k chybám, a pomocí informativní zprávy selžte.
Váš požadavek nepoužívat mysqldump je absurdní.
Proč si dávat tolik práce s vynalézáním kola, a ještě se tak mýlit? Stačí spustit mysqldump přes shellexec()
.
Viz také: