从PHP备份数据库

时间:2017-10-28 07:03:19

标签: php mysql xampp

我在本地服务器上测试此脚本

$dump_path = "backups"; 
$host = "localhost";  
$user = "root";  
$pass = "";  
$command=$dump_path.'mysqldump -h '.$host.' -u '.$user.' dental > dental_b.sql';
if  (system($command)) {
  echo "YES" ; 
} else {
  echo "Error" ;
}

但是为什么该脚本不会执行并显示错误,尽管来自数据库的所有数据都是真的。

1 个答案:

答案 0 :(得分:1)

如果你在localhost上使用mysqldump,我很确定你不需要主机选项。你连接命令的方式看起来很糟糕。让我告诉你什么对我有用。我一直都在用这个:

<?php

$user = "root";  
$pass = "";
$database = "dental";

// File name
$file_name = 'dental_b.' . date('mdY.Hia') . '.sql.gz';

// Storage directory
$storage_dir = __DIR__ . '/backups';
if( ! is_dir( $storage_dir ) )
    mkdir( $storage_dir, 0777, TRUE );

// Absolute path to new file
$absolute_path = $storage_dir . '/' . $file_name;

// Create the backup file
exec( 'mysqldump -u ' . $user . 
    ' -p' . $pass . 
    ' ' . $database . 
    ' | gzip > ' . $absolute_path );

是的,我正在抓取文件。我想你会发现这是存储,电子邮件等的好选择。

编辑---

如果您没有使用密码,则不应使用-p。在这种情况下,你想要改变命令。