Cree le 03/01/2010
Modifie le 03/01/2010
Php




Pas de participants
Pas de dossiers associes
Lors de l'installation (ou de la réinstallation) d'un site web, nous sommes souvent amenés à exécuter à la chaine des scripts SQL pour initialiser la base de données. Voici une petite fonction qui vous permet de vous faciliter la tâche lorsque ces scripts donc séparés en plusieurs fichiers. La seule contrainte est de nommer vos fichiers en indiquant l'ordre d'exécution par un numéro suivit d'un tiret bas puis du titre du fichier pour chaque nom de fichier, exemple : 1_membres.sql, 2_articles.sql, ...
/**
* Executes all sql files located in a folder and order by name, filenames must be like "8_sql_file.sql"
* @param $pdo PDO : pdo object
* @param $folder string : folder path of sql files, ending by "/"
*/
function install_db(PDO $pdo,$folder) {
// Open directory
if(!is_dir($folder)) {
throw new Exception('Folder \''.$folder.'\' doesn\'t exist.');
}
if(!($directory = opendir($folder))) {
throw new Exception('Permission denied to read in folder \''.$folder.'\'.');
}
// List SQL files
$tabFiles = array();
while(($entry = readdir($directory)) !== false) { // List files
if(sscanf(pathinfo($entry,PATHINFO_BASENAME),'%d_%s.sql',$fileNum,$fileName) == 2) { // SQL file
$tabFiles[$fileNum] = $folder.$entry;
}
}
ksort($tabFiles);
// List and execute SQL requests
foreach($tabFiles as $file) {
$tabRequests = explode(';',file_get_contents($file));
foreach($tabRequests as $request) {
$pdo->query($request);
}
}
}