资讯专栏INFORMATION COLUMN

PHP 备份 Mysql 数据库的实现

ZweiZhao / 446人阅读

摘要:变量参数设置连接数据库获取数据库的所有表循环操作每个表获取创建表的语句获取数据表中的字段信息查询每个字段的内容拼成字符串获取每张表对应的语句转义特殊字符输出内容到文件释放资源关闭连接

// 变量参数设置
$options = array(

"db_host"   =>"localhost",
"db_user"   =>"root",
"db_pwd"    =>"",
"db_name"   =>"test",
"db_charset"=>"utf8",

);
// 连接数据库
$conn = mysql_connect($options["db_host"], $options["db_user"], $options["db_pwd"]);
mysql_select_db("test", $conn);
mysql_query("SET NAMES {$options["db_charset"]}", $conn);
// 获取数据库的所有表
$tableArr = array();
$resource = mysql_query("SHOW TABLES FROM test", $conn);
while ($tempArr = mysql_fetch_row($resource)) {

$tableArr[] = $tempArr[0];

}
// 循环操作每个表
foreach ($tableArr as $table) {

// (1)获取创建表的 SQL 语句
$resource = mysql_query("SHOW CREATE TABLE ".$table, $conn);
$tempArr = mysql_fetch_row($resource);
$sqlStr = "DROP TABLE IF EXISTS ".$table.";
";
$sqlStr .= $tempArr[1].";
";
// (2)获取数据表中的字段信息
$fieldArr = array();
$resource = mysql_query("SHOW COLUMNS FROM ".$table);
while ($tempArr = mysql_fetch_assoc($resource)) {
    if ($tempArr["Key"] == "PRI") {
        $fieldArr["PRI"] = $tempArr["Field"];
    } else {
        $fieldArr[] = $tempArr["Field"];
    }
}
// (3)查询每个字段的内容, 拼成 SQL 字符串
$sql = "SELECT * FROM ".$table;
if (!empty($fieldArr["PRI"])) $sql .= " ORDER BY ".$fieldArr["PRI"]." ASC";
$resource = mysql_query($sql);
while ($tempArr = mysql_fetch_row($resource)) {//获取每张表对应的 INSERT SQL 语句
    $sqlStr .= "INSERT INTO ".$table." VALUES (";
    foreach ($tempArr as $value) {
        $sqlStr .= """.addslashes($value)."", ";//转义特殊字符
    }
    $sqlStr = substr($sqlStr, 0, -2).");
";
}
$sqlStr .= "

-- =========================$table

";
// (4)输出内容到文件
$handle = fopen("db_bakup_{$options["db_name"]}.sql", "a+");
if (flock($handle, LOCK_EX)) {
    fwrite($handle, $sqlStr);
    flock($handle, LOCK_UN);
}
fclose($handle);

}
// 释放Mysql资源, 关闭连接
mysql_free_result($resource);
mysql_close($conn);
?>

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25617.html

相关文章

  • SimfaseDevEnv一个Vagrant构建开发环境

    摘要:整体与很像,但是做了一些更改,为了更适应中国国内的开发网络环境。表示宿主机器的目录,表示环境目录。将虚拟机置于休眠状态。在开发过程中可能会需要增加多个站点来运行不同的开发程序。与扩展名重名,建议将的改成为佳。 SimfaseDevEnv 介绍 SimfaseDevEnv是为php开发者提供的开发环境,构建在vagrant之上;Vagrant的Vagrangfile配置文件是在Homes...

    Noodles 评论0 收藏0
  • Yii2 开发MYSQL数据备份功能

    摘要:应用场景数据对于网站来说是非常重要的一般后台都有数据备份功能。使用的第三方拓展可以快速开发。是基于的一款第三方扩展,安装配置一下可以正常访问,也可以很方便自定义。在开发过程中,因为备份后在导入出现一些问题。所以做了一些修改。 应用场景 数据对于网站来说 是非常重要的 一般 cms 后台 都有 数据备份功能。使用Yii 的第三方拓展 可以快速开发。 spanjeta/yii2-backu...

    Warren 评论0 收藏0
  • PHP程序员学习路线

    摘要:第一阶段基础阶段基础程序员重点把搞熟练核心是安装配置基本操作目标能够完成基本的系统安装,简单配置维护能够做基本的简单系统的开发能够在中型系统中支持某个功能模块的开发。本项不做重点学习,除非对前端有兴趣。 第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟练(核心是安装配置基本操作) 目标:能够完成基本的LNMP系统安装,简单配置维护;能够做基本的简单系统的PHP开发;能够在P...

    genedna 评论0 收藏0
  • 透过 Crontab 排程备份 Mariadb (Mysql)使用 php + exec + mys

    摘要:本教学使用环境介绍伺服器端资料库语言版本本机端一开始原本是用去备份资料库,但是发现会有一些问题,于是改成这种方式,直接透过去备份,出来的格式也不会有什么问题。 本教学使用环境介绍伺服器端:Ubuntu 18.04 LTS资料库:Mariadb 10.1.34(Mysql)语言版本:php 7.3本机端:MacOS High Sierra 一开始原本是用 php 去备份资料库,但是发现会...

    mingzhong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<