php备份数据库类分享
<?php
/**
*
* @name php备份数据库
* @param string $dbhost 连接主机
* @param string $dbuser 用户名
* @param string $dbpwd 连接密码
* @param string $dbname 要备份的数据库
* @param string $savefilename 要保存的文件名, 默认文件保存在当前文件夹中,以日期作区分
* @return null
* @example backupmysqldata('localhost', 'root', '123456', 'yourdbname');
*
*/
function backupmysqldata($dbhost, $dbuser, $dbpwd, $dbname, $savefilename = '')
{
header("content-type:text/html;charset=utf-8");
error_reporting(0);
set_time_limit(0);
echo '数据备份中,请稍候......<br />';
$link = mysql_connect($dbhost, $dbuser, $dbpwd) or die('数据库连接失败: ' . mysql_error());
mysql_select_db($dbname) or die('数据库连接失败: ' . mysql_error());
mysql_query('set names utf8');
// 声明变量
$isdropinfo = '';
$insertsql = '';
$row = array();
$tables = array();
$tablestructure = array();
$filename = ($savefilename ? $savefilename : 'mysql_data_bakeup_') . date('ymdhis') . '.sql';
// 枚举该数据库所有的表
$res = mysql_query("show tables from $dbname");
while ($row = mysql_fetch_row($res)) {
$tables[] = $row[0];
}
mysql_free_result($res);
// 枚举所有表的创建语句
foreach ($tables as $val) {
$res = mysql_query("show create table $val", $link);
$row = mysql_fetch_row($res);
$isdropinfo = "drop table if exists `" . $val . "`;rn";
$tablestructure = $isdropinfo . $row[1] . ";rn";
file_put_contents($filename, $tablestructure, file_append);
mysql_free_result($res);
}
// 枚举所有表的insert语句
foreach ($tables as $val) {
$res = mysql_query("select * from $val");
// 没有数据的表不执行insert
while ($row = mysql_fetch_row($res)) {
$sqlstr = "insert into `".$val."` values (";
foreach($row as $v){
$sqlstr .= "'$v',";
}
//去掉最后一个逗号
$sqlstr = substr($sqlstr, 0, strlen($sqlstr) - 1);
$sqlstr .= ");rn";
file_put_contents($filename, $sqlstr, file_append);
}
mysql_free_result($res);
}
echo '数据备份成功!';
}
// 调用此方法
backupmysqldata('localhost', 'root', '123456', 'youdbname');
?>
以上所述就是本文的全部内容了,希望大家能够喜欢。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!