резервное копирование базы данных MySQL с помощью ошибки PHP - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь сделать резервную копию своей базы данных, используя этот код:

$conn = mysqli_connect("localhost", "root", "", "mjaudio");

define("BACKUP_PATH", "/mjaudio/uploads/");

$server_name   = "localhost";
$username      = "root";
$password      = "";
$database_name = "mjaudio";
$date_string   = date("Ymd");

$cmd = "mysqldump --routines -h {$server_name} -u {$username} -p{$password} {$database_name} > " . BACKUP_PATH . "{$date_string}_{$database_name}.sql";

exec($cmd);

if (mysqli_query($conn, $cmd)) {
    echo "<div class='alert alert-success'> ";
    echo "<strong>Backup Successfull</strong>";
    echo "</div>";
} else {
    echo "<div class='alert alert-danger'> ";
    echo "<strong>Oops! Something went wrong!</strong>";
    echo "Error: " .$cmd."<br>".mysqli_error($conn);
    echo "</div>";
}

но выдает ошибку:

Oops! Something went wrong!Error: mysqldump --routines -h localhost -u root -p mjaudio > /mjaudio/uploads/20180831_mjaudio.sql
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'mysqldump --routines -h localhost -u root -p mjaudio > /mjaudio/uploads/20180831' at line 1

Я пытался исправить запрос, но, похоже, он не работает. Моя текущая панель управления Xampp v3.2.2. Есть ли проблемы в версиях? Как я могу это исправить?

1 Ответ

0 голосов
/ 31 августа 2018

Проблема в том, что вы пытаетесь запросить вашу командную строку. Это не оператор SQL. Остальная часть кода выглядит нормально

$conn = mysqli_connect("localhost", "root", "", "mjaudio");

define("BACKUP_PATH", "/mjaudio/uploads/");

$server_name   = "localhost";
$username      = "root";
$password      = "";
$database_name = "mjaudio";
$date_string   = date("Ymd");

$cmd = "mysqldump --routines -h {$server_name} -u {$username} -p{$password} {$database_name} > " . BACKUP_PATH . "{$date_string}_{$database_name}.sql";

if (exec($cmd)) {
    echo "<div class='alert alert-success'> ";
    echo "<strong>Backup Successfull</strong>";
    echo "</div>";
} else {
    echo "<div class='alert alert-danger'> ";
    echo "<strong>Oops! Something went wrong!</strong>";
    echo "Error with: " .$cmd;
    echo "</div>";
}
...