PHP后台备份MySQL数据库的源码实例


Posted in PHP onMarch 18, 2019

PHP 备份 mysql 数据库的源代码,在完善的 PHP+Mysql 项目中,在后台都会有备份 Mysql 数据库的功能,有了这个功能,对于一些不便自己写shell脚本备份的VPS来说,就不用使用 FTP 或者使用 mysql 的管理工具进行 mysql 数据库备份下载,非常方便。

下面是一个php数据库备份的源代码,大家也可以根据自己的需求进行修改。

<?php 
// 备份数据库
$host = "localhost";
$user = "root"; //数据库账号
$password = ""; //数据库密码
$dbname = "mysql"; //数据库名称
// 这里的账号、密码、名称都是从页面传过来的
if (!mysql_connect($host, $user, $password)) // 连接mysql数据库
{
 echo '数据库连接失败,请核对后再试';
  exit;
} 
if (!mysql_select_db($dbname)) // 是否存在该数据库
{
 echo '不存在数据库:' . $dbname . ',请核对后再试';
  exit;
} 
mysql_query("set names 'utf8'");
$mysql = "set charset utf8;\r\n";
$q1 = mysql_query("show tables");
while ($t = mysql_fetch_array($q1))
{
  $table = $t[0];
  $q2 = mysql_query("show create table `$table`");
  $sql = mysql_fetch_array($q2);
  $mysql .= $sql['Create Table'] . ";\r\n";
  $q3 = mysql_query("select * from `$table`");
  while ($data = mysql_fetch_assoc($q3))
  {
    $keys = array_keys($data);
    $keys = array_map('addslashes', $keys);
    $keys = join('`,`', $keys);
    $keys = "`" . $keys . "`";
    $vals = array_values($data);
    $vals = array_map('addslashes', $vals);
    $vals = join("','", $vals);
    $vals = "'" . $vals . "'";
    $mysql .= "insert into `$table`($keys) values($vals);\r\n";
  } 
} 
$filename = $dbname . date('Ymjgi') . ".sql"; //存放路径,默认存放到项目最外层
$fp = fopen($filename, 'w');
fputs($fp, $mysql);
fclose($fp);
echo "数据备份成功";
?>

PHP执行Mysql数据库的备份和还原

使用mysqldump命令备份

mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。

mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。然后通过这些语句,就能够创建表并插入数据。

mysqldump基本语法:

mysqldump -u username -p password dbname table1 table2 ...-> BackupName.sql
  • username为数据库用户名;
  • password为数据库密码
  • dbname参数表示数据库的名称;
  • table1和table2参数表示需要备份的表的名称,为空则整个数据库备份;
  • BackupName.sql参数表设计备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据库被分成一个后缀名为sql的文件;
$exec="D:/phpstudy/mysql/bin/mysqldump -u".$db_user." -p".$db_pwd." ".$db_name." > ".$name;
exec($exec);
//前面要设置mysql执行文件的路径。

注意:这里的-p后面的password不要有空格,否则可能只会生成空的sql文件,后面$name是生成文件路径及名称。

简单的备份数据库就完成了。

还原使用mysqldump命令备份的数据库的语法

mysql -u root -p password dbname < backup.sql

参数跟备份时一样,backup.sql是需要还原的数据库文件,文件路径为绝对路径。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

PHP 相关文章推荐
模拟xcopy的函数
Oct 09 PHP
dedecms模板标签代码官方参考
Mar 17 PHP
生成静态页面的php函数,php爱好者站推荐
Mar 19 PHP
php cookie 登录验证示例代码
Mar 16 PHP
一步一步学习PHP(5) 类和对象
Feb 16 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
Mar 12 PHP
PHP图像处理类库及演示分享
May 17 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
PHP的全局错误处理详解
Apr 25 PHP
php验证身份证号码正确性的函数
Jul 20 PHP
详解Laravel服务容器的绑定与解析
Nov 05 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
Mar 18 #PHP
php+ajax 文件上传代码实例
Mar 18 #PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 18 #PHP
详解php中curl返回false的解决办法
Mar 18 #PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 #PHP
PHP自动生成缩略图函数的源码示例
Mar 18 #PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
Mar 18 #PHP
You might like
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
PHP通过引用传递参数用法分析
2016/12/01 PHP
php实现算术验证码功能
2018/12/05 PHP
IE8 中使用加速器(Activities)
2010/05/14 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
2018/08/30 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
vue 查看dist文件里的结构(多种方式)
2020/01/17 Javascript
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
跟老齐学Python之for循环语句
2014/10/02 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
python利用不到一百行代码实现一个小siri
2017/03/02 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
pycharm安装图文教程
2017/05/02 Python
Python 加密与解密小结
2018/12/06 Python
Python OS模块实例详解
2019/04/15 Python
python创建学生管理系统
2019/11/22 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
JAVA代码查错题
2014/10/10 面试题
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
假期读书倡议书3篇
2019/08/19 职场文书
SQL Server数据定义——模式与基本表操作
2021/04/05 SQL Server
JavaScript控制台的更多功能
2021/04/28 Javascript