PHP选择性备份MySQL数据库完整函数
2015-10-11 17:14
537 查看
MySQL备份的方式很多,这里介绍如何用PHP有选择性的备份。
公共函数:传入连接数据库的参数和要备份的表即可,返回为表结构即数据sql字符串
调用示例:
在浏览器中导出为文件:
直接在浏览器中输出:
记得在脚本最开始关闭错误信息提示:
下面是一个完整的示例:(导出文件到浏览器)
公共函数:传入连接数据库的参数和要备份的表即可,返回为表结构即数据sql字符串
function backup_tables($host, $user, $pass, $name, $tables = '*') { $link = mysql_connect($host, $user, $pass); if(!$link) die(" connection failed"); mysql_select_db($name, $link); mysql_query('set names utf8'); if($tables == '*') { $tables = array(); $result = mysql_query('SHOW TABLES'); while($row = mysql_fetch_row($result)) { $tables[] = $row[0]; } }else{ $tables = is_array($tables)?$tables:explode(',', $tables); } $return = ''; foreach ($tables as $table) { $result = mysql_query('SELECT * FROM '.$table); $num_fields = mysql_num_fields($result); $return .= 'DROP TABLE '.$table.';'; $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table)); $return .= "\n\n".$row2[1].";\n\n"; for($i=0; $i<$num_fields; $i++) { while($row = mysql_fetch_row($result)) { $return .= 'INSERT INTO '.$table.' VALUES('; for($j=0; $j<$num_fields; $j++) { $row[$j] = addslashes($row[$j]); //$row[$j] = ereg_replace("\n", "\\n", $row[$j]); if(isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; } if($j<($num_fields-1)) { $return .= ','; } } $return .= ");\n"; } } $return .= "\n\n\n"; } return $return; }
调用示例:
echo backup_tables($host, $user, $passwd, $dbname, $table);
在浏览器中导出为文件:
$filename = "bak".date("Ymj").".sql"; header("Content-disposition:filename=".$filename); header("Content-type:application/octetstream"); header("Pragma:no-cache"); header("Expires:0");
直接在浏览器中输出:
header('content-type:text/plain;charset=utf-8');
记得在脚本最开始关闭错误信息提示:
error_reporting(0);
下面是一个完整的示例:(导出文件到浏览器)
<?php error_reporting(0); //header('content-type:text/plain;charset=utf-8'); //这个是以纯文本输出用的 $host = 'localhost'; $user = 'root'; $passwd = ''; $dbname = 'db'; $filename = $dbname.date("Ymj").".sql"; header("Content-disposition:filename=".$filename); header("Content-type:application/octetstream"); header("Pragma:no-cache"); header("Expires:0"); echo backup_tables($host, $user, $passwd, $dbname); function backup_tables($host, $user, $pass, $name, $tables = '*') { $link = mysql_connect($host, $user, $pass); if(!$link) die("fucking connection failed"); mysql_select_db($name, $link); mysql_query('set names utf8'); if($tables == '*') { $tables = array(); $result = mysql_query('SHOW TABLES'); while($row = mysql_fetch_row($result)) { $tables[] = $row[0]; } }else{ $tables = is_array($tables)?$tables:explode(',', $tables); } $return = ''; foreach ($tables as $table) { $result = mysql_query('SELECT * FROM '.$table); $num_fields = mysql_num_fields($result); $return .= 'DROP TABLE '.$table.';'; $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table)); $return .= "\n\n".$row2[1].";\n\n"; for($i=0; $i<$num_fields; $i++) { while($row = mysql_fetch_row($result)) { $return .= 'INSERT INTO '.$table.' VALUES('; for($j=0; $j<$num_fields; $j++) { $row[$j] = addslashes($row[$j]); //$row[$j] = ereg_replace("\n", "\\n", $row[$j]); if(isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; } if($j<($num_fields-1)) { $return .= ','; } } $return .= ");\n"; } } $return .= "\n\n\n"; } return $return; }
相关文章推荐
- 对web应用中单一入口模式的理解及php实现
- 批量下载FTP上的文件
- PHP备份MySQL数据库
- PHP打印调用堆栈信息,用于程序调试
- php中使用end方法报错
- ThinkPHP控制器分级
- Laravel 报错 :Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING)
- 【PHP】找几个例子就能快速复习PHP基础知识
- php-判断一个文件是否存在,便于删除等操作
- php mkdir函数
- php实现Mysql简易操作类
- 【PHP】PHP MySQL问题 phpinfo() 没有显示MySQL模块
- ThinkPHP 3.2.3 实现搜索分页
- JTextpane 加入的行号
- php正则提取img所有属性值
- PHP第一季视频教程.李炎恢.学习笔记(四)(第2章 基本语法(3))
- PHP关闭Notice错误提示
- PHPSingleton模式的例子
- thinkPHP简单留言板
- PHP第一季视频教程.李炎恢.学习笔记(三)(第2章 基本语法(2))