Esse script tem sérios problemas de quebra de acordo. Não funcionará para nenhum, mas para o banco de dados mais trivial.
- NULLs não são compatíveis.
- Os conjuntos de caracteres não são considerados.
- Os nomes das tabelas não são delimitados.
- Somente tabelas são suportadas -- não visualizações, procedimentos armazenados, gatilhos, funções, etc.
addslashes() não é seguro para conjunto de caracteres
.mysql_query()
pré-busca todos as linhas da tabela, portanto, se você consultar uma tabela com milhões de linhas, excederá seu limite de memória PHP. Usemysql_unbuffered_query()
em vez de. Pensando bem, vejo que você coleta toda a saída em $return, então isso é discutível.- Sua supressão de erros com o
@
operador é uma má prática. Verifique se há erros e falhe normalmente com uma mensagem informativa.
Sua exigência de não usar mysqldump é absurda.
Por que fazer tanto trabalho para reinventar a roda e ainda errar tanto? Basta executar o mysqldump via
shellexec()
. Veja também: