php备份数据库脚本的几个例子
利用php备份mysql数据库就是把数据生成.sql文件,这样就算是数据备份成功了,恢复时也可以直接读取再一条条执行即可,下面整理了一些备份例子大家有兴趣的可进来参考.
例子,代码如下:
<?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 "数据备份成功" ; ?> //例子,代码如下: #!/usr/bin/php HdhCmsTestphpfensi测试数据 <?php header( 'Content-Type:text/html;charset=utf-8' ); define( 'BACK_PATH' , dirname( __FILE__ )); /** 为空数组就备份所有数据库 */ $back_databases = array ( 'learning' , 'wp' ); $mysql_host = 'localhost' ; $mysql_user = 'root' ; $mysql_passwd = 'root' ; if ( $conn = mysql_connect( $mysql_host , $mysql_user , $mysql_passwd )){ $databases = array (); mysql_select_db( 'mysql' , $conn ); $query =mysql_query( 'show databases' , $conn ); while ( $row = mysql_fetch_array( $query )) { if ( empty empty ( $row )) continue ; $database = $row [0]; if (! empty empty ( $back_databases ) && !in_array( $database , $back_databases )) continue ; $sql_dir = BACK_PATH . "/{$database}.sql" ; $execs = "mysqldump --user={$mysql_user} --password={$mysql_passwd} {$database} > " . $sql_dir ; system( $execs ); if ( file_exists ( $sql_dir . '.gz' )) { unlink( $sql_dir . '.gz' ); } system( 'gzip ' . $sql_dir ); } } //例子,代码如下: <?php $host = "##mysql服务器地址##" ; $user = "##登录帐号##" ; $password = "##登录密码##" ; $dbname = "##数据库名##" ; $filename = "##备份文件路径##" ; mysql_connect( $host , $user , $password ); mysql_select_db( $dbname ); $mysql .= "CREATE DATABASE IF NOT EXISTS `" . $dbname . "`;\r\n" ; $mysql .= "USE `" . $dbname . "`;\r\n\r\n" ; $q0 =mysql_query( "set names utf8" ); $q1 =mysql_query( "show tables" ); while ( $t =mysql_fetch_array( $q1 )){ $table = $t [0]; $mysql .= "DROP TABLE IF EXISTS `" . $table . "`;\r\n" ; $q2 =mysql_query( "show create table `$table`" ); $sql =mysql_fetch_array( $q2 ); $mysql .= $sql [ 'Create Table' ]. ";\r\n\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" ; } $mysql .= "\r\n" ; } $fp = fopen ( $filename , 'wb' ); fputs ( $fp , $mysql ); fclose( $fp ); include_once ( 'lib/pclzip.lib.php' ); $archive = new PclZip( $filename . '.zip' ); $v_list = $archive ->create( $filename ); if ( $v_list == 0) { die ( "Error : " . $archive ->errorInfo(true)); } if ( file_exists ( $filename )){ unlink( $filename ); } echo "Mysql's backup successfully to " . $filename . ".zip" ; ?>Zip打包备份代码,几乎就是全抄demo,太方便了,代码如下:
<?PHP include_once ( 'lib/pclzip.lib.php' ); $src = "##源路径##" ; $dest = "##目标zip路径##" ; $archive = new PclZip( $dest ); $v_list = $archive ->create( $src ); if ( $v_list == 0) { die ( "Error : " . $archive ->errorInfo(true)); } else { print( "Success" ); } ?>pclzip.lib.php这个压缩包文件大家百度去下载这里未提供.
查看更多关于php备份数据库脚本的几个例子 - php高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did30508