Maison >base de données >tutoriel mysql >Comment exporter une base de données MySQL à l'aide de PHP avec un emplacement de téléchargement/enregistrement défini par l'utilisateur ?

Comment exporter une base de données MySQL à l'aide de PHP avec un emplacement de téléchargement/enregistrement défini par l'utilisateur ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-15 01:19:02938parcourir

How to export MySQL database using PHP with user-defined download/save location?

Exporter la base de données MySQL à l'aide de PHP

Contexte

L'exportation de bases de données est cruciale pour la sauvegarde des données, à des fins de restauration et de migration. Cet article fournit une solution complète pour exporter des bases de données MySQL à l'aide de PHP.

Exportation de la base de données

Le code PHP présenté exporte de manière transparente la base de données vers un fichier nommé "backup.sql. " Cependant, l'utilisateur n'a pas le contrôle sur l'emplacement de sauvegarde et la possibilité de téléchargement. Cet article répond à ces limitations en améliorant le code.

Code PHP amélioré

Vous trouverez ci-dessous le code PHP amélioré qui permet à l'utilisateur de contrôler les options d'enregistrement et de téléchargement :

$DB_HOST = "localhost";
$DB_USER = "root";
$DB_PASS = "admin";
$DB_NAME = "dbname";

$con = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);

$tables = array();

$result = mysqli_query($con, "SHOW TABLES");
while ($row = mysqli_fetch_row($result)) {
    $tables[] = $row[0];
}

$return = '';

foreach ($tables as $table) {
    $result = mysqli_query($con, "SELECT * FROM " . $table);
    $num_fields = mysqli_num_fields($result);

    $return .= 'DROP TABLE ' . $table . ';';
    $row2 = mysqli_fetch_row(mysqli_query($con, 'SHOW CREATE TABLE ' . $table));
    $return .= "\n\n" . $row2[1] . ";\n\n";

    for ($i = 0; $i < $num_fields; $i++) {
        while ($row = mysqli_fetch_row($result)) {
            $return .= 'INSERT INTO ' . $table . ' VALUES(';
            for ($j = 0; $j < $num_fields; $j++) {
                $row[$j] = addslashes($row[$j]);
                if (isset($row[$j])) {
                    $return .= '"' . $row[$j] . '"';
                } else {
                    $return .= '""';
                }
                if ($j < $num_fields - 1) {
                    $return .= ',';
                }
            }
            $return .= ");\n";
        }
    }
    $return .= "\n\n\n";
}

// User-defined download/save location variable
$download_path = isset($_GET['download_path']) ? $_GET['download_path'] : 'default_path'; // Set default path if not provided

$handle = fopen($download_path . '/backup.sql', 'w+');
fwrite($handle, $return);
fclose($handle);

if (isset($_GET['download']) && $_GET['download'] == true) {
    header('Content-Type: application/octet-stream');
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename=\"backup.sql\"");
    echo $return;
    exit;
} else {
    echo "Success! Database exported to " . $download_path . "/backup.sql";
}

Explication du code

Le code amélioré intègre désormais les éléments suivants fonctionnalités :

  • Emplacement de téléchargement/enregistrement défini par l'utilisateur : La variable $download_path permet aux utilisateurs de spécifier l'emplacement de téléchargement via le paramètre URL download_path.
  • Option de téléchargement : En ajoutant le paramètre de téléchargement à l'URL (?download=true), la base de données est directement téléchargée dans le navigateur de l'utilisateur. navigateur.

Conclusion

Ce code PHP amélioré fournit une solution flexible pour l'exportation de bases de données MySQL, offrant à la fois des options de sauvegarde manuelle et de téléchargement direct. Il permet aux utilisateurs de mieux contrôler leurs besoins en matière de sauvegarde et de restauration de bases de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn