Quella sceneggiatura ha seri problemi di rottura. Non funzionerà per nessun database tranne il più banale.
- I valori NULL non sono supportati.
- I set di caratteri non vengono presi in considerazione.
- I nomi delle tabelle non sono delimitati.
- Sono supportate solo le tabelle, non le viste, le procedure memorizzate, i trigger, le funzioni, ecc.
addslashes()
non è sicuro per i set di caratteri .mysql_query()
precarica tutti le righe della tabella, quindi se esegui una query su una tabella con milioni di righe, supererai il limite di memoria PHP. Usamysql_unbuffered_query()
invece. Ripensandoci, vedo che raccogli tutto l'output in $return, quindi questo è discutibile.- La tua soppressione degli errori con il
@
operatore è una cattiva pratica. Verifica la presenza di errori e fallisci con grazia con un messaggio informativo.
La tua esigenza di non utilizzare mysqldump è assurdo.
Perché lavorare così tanto per te stesso reinventando la ruota e sbagliando ancora? Basta eseguire mysqldump tramite shellexec()
.
Vedi anche: