Nella gestione di sistemi web spesso si può avere la necessità di caricare file .sql nel nostro database direttamente da uno script php.
Problema
Il problema principale che si deve affrontare è dovuto al fatto che il comando source, utilizzabile da linea di comando, non fa parte delle librerie standard di mysql per php. Infatti se tentiamo di lanciare questo comando da php:
mysql_query(‘source file_path’);
avremo come risposta un tipico errore di sintassi:
Source failed: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server
version for the right syntax to use near ‘source file_path’ at line 1
La soluzione a tale problema è molto semplice. La riga di codice da inserire è la seguente:
shell_exec(‘mysql -u username -ppassword dbname < file_path’)
In questo modo il comando viene passato direttamente alla shell che lo esegue esattamente come farebbe se lo scrivessimo noi dalla linea di comando. Naturalmente, perchè lo script funzioni, è necessario che sulla macchina in cui gira il webserver sia installato un client (su linea di comando) di mysql.