php如何自动备份数据库表?本文就和大家分享使用php自动备份数据库表的实现方法,给大家做个参考,希望能帮助到大家。
1、前言
mysql数据库的备份方式有很多;
例如:
1、使用mysqldump函数
mysqldump -u username -p dbname table1 table2 ... > backupname.sql
dbname参数表示数据库的名称
table1和table2参数表示需要备份的表的名称,为空则整个数据库备份;
backupname.sql参数表设计备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据库被分成一个后缀名为sql的文件;
基本使用:
2、管理工具
备份数据库的方法很多,上面两种比较常见
而本次主要讲解如何通过php函数来自动备份数据库
2、相关函数介绍
2.1 、fopen
2.2、array_keys
2.3、array_values
2.4、implode
2.5、substr
2.6、fwrite
3、实现思路
4、代码构成
/**
* [copydb description] 备份数据库
* @param [type] $dbname [description] 数据库名
* @param [type] $filename [description] 存储的文件名
* @return [type] [description]
*/
public function copydb($dbname, $filename){
$myfile = fopen($filename, w) or die(unable to open file!);//打开存储文件
$this->link->query(use {$dbname});//切换数据库
$this->changedb($dbname);
$tables = $this->link->query('show tables');//获取当期数据库所有表名称
while($re = $tables->fetch(pdo::fetch_assoc)){
//var_dump($re);//查看数组构成
$tablename = $re['tables_in_'.$dbname];//构成特定的下标
$sql = show create table {$tablename};;
$tablesql = $this->link->query($sql);
fwrite($myfile, drop table if exists `{$tablename}`;\r\n);//加入默认删除表的遇见
//下面备份表结构,这个循环之执行一次
while($re = $tablesql->fetch(pdo::fetch_assoc)){
// echo <pre>;
// var_dump($re);
// echo </pre>;
echo 正在备份表{$re['table']}结构<br/>;
fwrite($myfile, $re['create table'].;\r\n\r\n);
echo 正在备份表{$re['table']}结构完成<br/>;
}
//下面备份表数据
echo 正在备份表{$tablename}数据<br/>;
$sql = select * from {$tablename};;
$valuesql = $this->link->query($sql);
while($re = $valuesql->fetch(pdo::fetch_assoc)){
$keyarr = array_keys($re);//获得对应的键值
$valuearr = array_values($re);//获得对应的值
$keystr = '';
foreach ($keyarr as $key => $value) {
$keystr .= `.$value.`,;
}
$keystr = substr($keystr,0,strlen($keystr)-1); //取出最后一个逗号
$valuestr = '';
// var_dump($valuearr);
foreach ($valuearr as $key => $value) {
$valuestr .= '.$value.',;
}
//以上的处理只是对应sql的写法
$valuestr = substr($valuestr,0,strlen($valuestr)-1); //取出最后一个逗号
$sql = insert into `{$tablename}`({$keystr}) values({$valuestr});
fwrite($myfile, $sql.;\r\n\r\n);
}
echo 正在备份表{$tablename}数据完成<br/>;
echo <br/><hr/>;
}
fclose($myfile);
}
5、结语
备份数据库的主要过程:
切换到对应的数据库;
使用show create table tablename,获得表结构,写到文件中;
然后查询所有的表数据,循环生成相对应sql语句,写到文件中;
试运行生成的sql文件;
相关推荐:
navicat for mysql定时备份数据库及数据恢复操作
如何实现php自动备份数据库
如何利用php实现自动备份数据库表的图文代码介绍
以上就是php如何自动备份数据库表的详细内容。