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 相关文章推荐
[FAQ]PHP中的一些常识:类篇
Oct 09 PHP
php做下载文件的实现代码及文件名中乱码解决方法
Feb 03 PHP
php防注入,表单提交值转义的实现详解
Jun 10 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
Jul 03 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
Jul 08 PHP
简单实用的PHP防注入类实例
Dec 05 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
Jul 04 PHP
php+mysql实现简单的增删改查功能
Jul 13 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
php获取手机端的号码以及ip地址实例代码
Sep 12 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
May 06 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数组应该有多大的分析
2009/07/30 PHP
一步一步学习PHP(8) php 数组
2010/03/05 PHP
phpmyadmin config.inc.php配置示例
2013/08/27 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
关于Javascript 的 prototype问题。
2007/01/03 Javascript
JS动画效果代码3
2008/04/03 Javascript
javascript 学习之旅 (2)
2009/02/05 Javascript
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
JavaScript通过字符串调用函数的实现方法
2015/03/18 Javascript
深入浅析react native es6语法
2015/12/09 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
非常实用的vue导航钩子
2017/03/20 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
JSON 数据格式详解
2017/09/13 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
利用aardio给python编写图形界面
2017/08/21 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
PHP如何对用户密码进行加密
2014/07/31 面试题
如何整合JQuery和Prototype
2014/01/31 面试题
如何通过jdbc调用存储过程
2012/04/19 面试题
计算机工程学院个人求职信
2013/10/05 职场文书
企业文化建设实施方案
2014/03/22 职场文书
外联部演讲稿
2014/05/24 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
2014年老干部工作总结
2014/11/21 职场文书
汇报材料怎么写
2014/12/30 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang
一文搞懂Redis中String数据类型
2022/04/03 Redis