备份数据库并下载到本地【db_backup.php】
创新互联公司是工信部颁发资质IDC服务器商,为用户提供优质的西部信息机房服务
?php
// 设置SQL文件保存文件名
$filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql";
// 所保存的文件名
header("Content-disposition:filename=".$filename);
header("Content-type:application/octetstream");
header("Pragma:no-cache");
header("Expires:0");
// 获取当前页面文件路径,SQL文件就导出到此文件夹内
$tmpFile = (dirname(__FILE__))."\\".$filename;
// 用MySQLDump命令导出数据库
exec("mysqldump -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname ".$tmpFile);
$file = fopen($tmpFile, "r"); // 打开文件
echo fread($file,filesize($tmpFile));
fclose($file);
exit;
?
1、如果服务器允许mysqldump 并且没有禁止PHP的shell_exec()这个函数的话
直接在PHP里面执行mysqldump就可以了。
2、通过mysql_query('show tables')的返回值遍历每个表,循环对每个表使用查询语句
select * into outfile '路径/文件名' from 表名
缺点是这样得到的是纯数据,恢复数据的时候你需要额外再写脚本
3、同样通过show tables返回表名,遍历每个表,通过select 语句查询,然后逐条结果处理,比如手工添加drop table 和create table 以及insert into等等,然后再写入文件。这样得到的备份数据是比较接近mysqldump的结果的,各种工具都可以用来恢复数据。缺点是如果数据库太大的话,效率不好说
1.打开数据库备份页面
//php代码,导出数据库
public function exportSql() {
$dbName = C('DB_NAME'); //读取配置文件中的数据库用户名、密码、数据库名
$dbUser = C('DB_USER');
$dbPwd = C('DB_PWD');
$fileName = date("Y-m-d")."_".$dbName.".sql";
$dumpFileName = "./sql_backup/".$fileName;
exec("D:/xampp/mysql/bin/mysqldump -u$dbUser -p$dbPwd $dbName $dumpFileName");
}
2.php exec函数,执行外部程序命令
exec(“D:/xampp/mysql/bin/mysqldump -u$dbUser -p$dbPwd $dbName $dumpFileName”);
此处执行mysqldump命令,导出数据库到$dumpFileName中,“D:/xampp/mysql/bin/”为mysqldump所在位置,“-u$dbUser -p$dbPwd”数据库的用户名和密码(中间不要加空格),$dbName为要导出数据库的名字