112 lines
4.7 KiB
PHP
Executable File
112 lines
4.7 KiB
PHP
Executable File
<?php
|
|
$nomFicAppelant = basename(__FILE__);
|
|
// if (empty($host)) include("../_conf/dbc.php");
|
|
|
|
// -----------------------------------------------------
|
|
// Connexion PDO
|
|
// -----------------------------------------------------
|
|
// try {
|
|
// $dsn = "mysql:host=$host;dbname=$bdd;charset=utf8";
|
|
// $db = new PDO($dsn, $user, $pass);
|
|
// $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Gestion des erreurs
|
|
// } catch (PDOException $e) {
|
|
// echo "Erreur : Impossible de se connecter à MySQL. " . PHP_EOL;
|
|
// echo "Erreur de débogage : " . $e->getMessage() . PHP_EOL;
|
|
// exit;
|
|
// }
|
|
|
|
// -----------------------------------------------------
|
|
// Initialisation des variables
|
|
// -----------------------------------------------------
|
|
$repD = './themes/dumpTheme/dump-' . $nomTableCibleCss . '.sql';
|
|
|
|
// -----------------------------------------------------
|
|
// Creation de la structure par recup du modele actif
|
|
// -----------------------------------------------------
|
|
$creation = '';
|
|
$creation .= "-- -----------------------------\n";
|
|
$creation .= "-- Création de la table " . $nomTableCibleCss . "\n";
|
|
$creation .= "-- -----------------------------\n";
|
|
|
|
try {
|
|
// Récupération de la structure de la table src avec PDO
|
|
$query = $idPdo->query("SHOW CREATE TABLE " . $nomTableSourceCss);
|
|
$createTable = $query->fetch(PDO::FETCH_ASSOC);
|
|
$creation .= $createTable['Create Table'] . ";\n\n";
|
|
} catch (PDOException $e) {
|
|
if (isset($debug[2]) && $debug[2] == '1' ) $debugMsg .= monDebug(2, ['PDOException structure' => $e->getMessage()],'theme.functionDump' ) ;
|
|
}
|
|
$creation = str_replace($nomTableSourceCss, $nomTableCibleCss, $creation);
|
|
|
|
// -----------------------------------------------------
|
|
// Enregistrement dans le fichier dump
|
|
// -----------------------------------------------------
|
|
$fichierDump = fopen($repD, "wb");
|
|
if ($fichierDump) {
|
|
fwrite($fichierDump, $creation);
|
|
fclose($fichierDump);
|
|
}
|
|
|
|
// -----------------------------------------------------
|
|
// Recup des données et ajout dans le fichier dump
|
|
// -----------------------------------------------------
|
|
$insertions = '';
|
|
$insertions .= "-- -----------------------------\n";
|
|
$insertions .= "-- Insertions dans la table " . $nomTableCibleCss . "\n";
|
|
$insertions .= "-- -----------------------------\n";
|
|
|
|
try {
|
|
// Utilisation d'un curseur pour parcourir les données en lots
|
|
$stmt = $idPdo->query("SELECT * FROM " . $nomTableSourceCss);
|
|
while ($mysqlValue = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
|
$insertions .= "INSERT INTO " . $nomTableCibleCss . " VALUES(";
|
|
$values = [];
|
|
foreach ($mysqlValue as $i => $valeur) {
|
|
if ($valeur === null) {
|
|
$values[] = "NULL";
|
|
} else {
|
|
$type = gettype($valeur);
|
|
// Si c'est une chaîne, ajouter des guillemets
|
|
if ($type === 'string') {
|
|
$values[] = "'" . addslashes($valeur) . "'";
|
|
} else {
|
|
$values[] = $valeur;
|
|
}
|
|
}
|
|
}
|
|
$insertions .= implode(", ", $values) . ");\n";
|
|
|
|
// Optimisation de l'écriture en fichier en évitant de stocker tout dans une variable
|
|
if (strlen($insertions) > 1024 * 1024) { // Par exemple, 1 Mo
|
|
// Écriture partielle dans le fichier pour réduire l'utilisation mémoire
|
|
file_put_contents($repD, $insertions, FILE_APPEND);
|
|
$insertions = ''; // Réinitialiser la variable
|
|
}
|
|
}
|
|
} catch (PDOException $e) {
|
|
if (isset($debug[2]) && $debug[2] == '1' ) echo 'PDOException datas=' . $e->getMessage();
|
|
}
|
|
|
|
// -----------------------------------------------------
|
|
// Enregistrement dans le fichier dump
|
|
// -----------------------------------------------------
|
|
if ($insertions) {
|
|
// Écriture finale si des données restent dans la variable
|
|
file_put_contents($repD, $insertions, FILE_APPEND);
|
|
}
|
|
|
|
|
|
// -----------------------------------------------------
|
|
// Debug
|
|
// -----------------------------------------------------
|
|
if (isset($debug[2]) && $debug[2] == '1') { $debugMsg .= monDebug(2, ['table creation' => $creation], '');}
|
|
if (isset($debug[2]) && $debug[2] == '1') { $debugMsg .= monDebug(2, ['table insertions' => $insertions], '');}
|
|
|
|
// // Fonction pour obtenir le type d'un champ avec PDO
|
|
// function pdo_field_type($resConn, $field_offset) {
|
|
// // Utilisation de PDO pour obtenir le type d'un champ
|
|
// $stmt = $resConn->query("DESCRIBE " . $resConn->getTableName());
|
|
// $fields = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
// return $fields[$field_offset]['Type'] ?? null;
|
|
// }
|
|
?>
|