利用宝塔面板的计划任务,可以实现对数据库的备份。主要代码如下:
//数据库配置 $host=""; $user=""; $password=""; $dbname=""; $fileaddr = ""; //备份数据库存放路径 $conn = mysqli_connect($host, $user, $password); // 这里的账号、密码、名称都是从页面传过来的 if (!$conn){ // 连接mysql数据库 echo '数据库连接失败,请核对后再试'; exit; } if (!mysqli_select_db($conn,$dbname)){ // 是否存在该数据库 echo '不存在数据库:' . $dbname . ',请核对后再试'; exit; } if($type === 'backup'){ mysqli_query($conn,"set names 'utf8'"); $mysql = "set charset utf8; "; $q1 = mysqli_query($conn,"show tables"); while ($t = mysqli_fetch_array($q1)){ $table = $t[0]; $q2 = mysqli_query($conn,"show create table `$table`"); $sql = mysqli_fetch_array($q2); $mysql .= $sql['Create Table'] . "; "; $q3 = mysqli_query($conn,"select * from `$table`"); while ($data = mysqli_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); "; } } //$filename1 = $dbname . date('Ymdhis') . ".sql"; $filename1 = $dbname . ".sql"; $filename = $fileaddr.$filename1; $fp = fopen($filename, 'w'); fputs($fp, $mysql); fclose($fp); echo "数据备份成功"; }elseif($type === 'import'){ $filestr = "sql"; $keywords= "jz"; $add = read_all($filestr,$keywords); $count = sizeof($add); $myarr = array(); for ($x=0; $x<$count; $x++) { $myarr[]=str_replace(".sql","",str_replace($fileaddr,"",$add[$x])); } $max = max($myarr); $newadr = "jz" . $max . ".sql"; $file_name = $fileaddr.$newadr; echo $file_name; set_time_limit(0); $fp = @fopen($file_name, "r") or die("不能打开SQL文件 $file_name");//打开文件 echo "<p>正在清空数据库,请稍等....<br>"; $result = mysqli_query($conn,"SHOW tables"); while ($currow=mysqli_fetch_array($result)){ mysqli_query($conn,"drop TABLE IF EXISTS $currow[0]"); echo "清空数据表【".$currow[0]."】成功!<br>"; } echo "<br>恭喜你清理MYSQL成功<br>"; echo "正在执行导入数据库操作<br>"; // 导入数据库的MySQL命令 $order = "mysql -u".$user." -p".$password." ".$dbname." < ".$file_name ; //echo $order; exec($order); echo "<br>导入完成!"; mysqli_close($conn); } /* * 遍历文件夹下所有文件 */ function read_all($dir,$keywords){ $address = array(); if(!is_dir($dir)) return false; $handle = opendir($dir); if($handle){ while(($fl = readdir($handle)) !== false){ $temp = $dir.DIRECTORY_SEPARATOR.$fl; //如果不加 $fl!='.' && $fl != '..' 则会造成把$dir的父级目录也读取出来 if(is_dir($temp) && $fl!='.' && $fl != '..'){ //echo '目录:'.$temp.'<br>'; //read_all($temp); $address[] = $temp ; }else{ if($fl!='.' && $fl != '..'){ //检查文件名是否以‘$keywords’开头 if(strpos($fl, $keywords) === 0){ $address[] = $temp ; } }else{ $address = null; } } } }else{ $address = null; } return $address; }
注意,在使用导入功能时,需要php开启exec功能(默认是不能开启的,具体百度一下),而且windows环境和linux环境使用的mysql命令是不一样的。
如果有什么问题,欢迎在下方留言!!
版权声明
1.本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
2.本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
3.若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
4.若内容涉及侵权或违法信息,请联系本站管理员进行下架处理,邮箱ganice520@163.com(本站不支持其他投诉反馈渠道,谢谢合作)
- 上一篇: redmi音箱免root开启导航键
- 下一篇: php实现m3u8格式转换mp4
发表评论