php备份数据库类分享
程序员文章站
2022-06-26 10:40:36
php备份数据库类分享
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 . "`;\r\n"; $tablestructure = $isdropinfo . $row[1] . ";\r\n"; 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 .= ");\r\n"; file_put_contents($filename, $sqlstr, file_append); } mysql_free_result($res); } echo '数据备份成功!'; } // 调用此方法 backupmysqldata('localhost', 'root', '123456', 'youdbname'); ?>
以上所述就是本文的全部内容了,希望大家能够喜欢。