Резервное копирование базы данных Mysql по нажатию кнопки в переполнении стека

Я пытаюсь сделать резервную копию по нажатию кнопки, используя следующий код, при каждом нажатии я получаю пустую базу данных. Я перепробовал все статьи, но результат тот же. Может ли кто-нибудь помочь мне решить эту проблему.

 <?php
ob_start();

$username = "root";
$password = "";
$hostname = "localhost";
$dbname   = "cars";

$command = "D:\\..\\wamp64\\bin\\mysqldump  --add-drop-table host=$hostname
--user=$username ";
if ($password)
$command.= "--password=". $password ." ";
$command.= $dbname;
system($command);

$dump = ob_get_contents();
ob_end_clean();

// send dump file to the output
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($dbname . "_" .
date("Y-m-d_H-i-s").".sql"));

flush();
echo $dump;
exit();
?>

0

Решение

Я собирался пройтись по вашему коду, но подумал, что могу просто дать вам тот, который я сделал ранее с одного из моих сайтов, так как он идентичен тому, что вы просили. Я могу сразу сказать вам, что причина, по которой ваша БД очищалась при щелчке, заключается в том, что вы отбрасывали базу данных в вашей команде exec, используя --add-drop-table:

Как удалить и повторно заполнить базы данных MySQL?

Это код, извлеченный с одного из моих бэкэндовых сайтов администраторов, для создания случайных дампов и резервных копий MySQL через broswer, когда это необходимо. Это очень просто, но чрезвычайно эффективно, если обеспечено должным образом. Форма устанавливается с помощью переключателей для загрузки или резервного копирования, а затем выполняет локальный mysqldump из cmdline. Резервное копирование будет выводиться, если это было успешно, путем тестирования, чтобы увидеть, действительно ли файл был заархивирован, и загрузка загрузит файл, который в значительной степени собран, используя пример с сайта PHP Вот. Я немного изменил его, чтобы вы могли добавить его в свой проект

   <?php$username = "root";
$password = "root";
$host = "localhost";
$dbname = "new";
$path = "/Applications/MAMP/htdocs/html/test123.sql";
$backup = exec('/Applications/MAMP/Library/bin/mysqldump --user=' . $username . ' --password='. $password .' --host=' . $host . ' ' . $dbname . ' > ' . $path . '');

if (isset($_POST['backup'])) {

if (file_exists($path)) {

echo "Backup Success";
echo "<br>";

} else {

echo "Backup failed!";
echo "<br>";
echo "Backup of " . $dbname . " does not exist in " . $path;

}

}

if (isset($_POST['download'])) {

if (file_exists($path)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($path).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($path)); //Whoops...Forgot to change variable!
readfile($path); //Whoops...Forgot to change variable!
exit;
} else {

echo "File does not exist!";

}}

?><!DOCTYPE html>
<html>
<head>
<title>Backup Page</title>
</head>
<body>

<form method="post">

<input type="radio" name="backup"> Backup <br>
<input type="radio" name="download"> Download <br>
<input type="submit" value="MySQL Backup">

</form>

</body>
</html>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]