Ten skrypt ma poważne problemy, które mogą złamać umowę. Nie będzie działać z żadną inną niż najbardziej trywialną bazą danych.
- NULL nie są obsługiwane.
- Zestawy znaków nie są brane pod uwagę.
- Nazwy tabel nie są rozdzielane.
- Obsługiwane są tylko tabele — nie widoki, procedury składowane, wyzwalacze, funkcje itp.
addslashes() nie jest bezpieczny dla zestawu znaków
.mysql_query()
pobiera z wyprzedzeniem wszystkie wiersze z tabeli, więc jeśli wyślesz zapytanie do tabeli zawierającej miliony wierszy, przekroczysz limit pamięci PHP. Użyjmysql_unbuffered_query()
zamiast. Po namyśle widzę, że zbierasz wszystkie dane wyjściowe w $return, więc to jest dyskusyjne.- Twoje tłumienie błędów za pomocą
@
operator to zła praktyka. Sprawdź błędy i zakończ z wdziękiem komunikat informacyjny.
Twoje wymaganie, aby nie używać mysqldump jest absurdalne.
Po co tyle pracy dla siebie, by wymyślać koło na nowo, a mimo to tak źle? Po prostu uruchom mysqldump przez shellexec()
.
Zobacz też: