首頁 > php教程 > php手册 > 主體

php备份数据库脚本的几个例子

WBOY
發布: 2016-05-25 16:38:19
原創
1106 人瀏覽過

利用php备份mysql数据库就是把数据生成.sql文件,这样就算是数据备份成功了,恢复时也可以直接读取再一条条执行即可,下面整理了一些备份例子大家有兴趣的可进来参考.

例子,代码如下:

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

//例子,代码如下:

//!/usr/bin/php
<?php
header(&#39;Content-Type:text/html;charset=utf-8&#39;);
define(&#39;BACK_PATH&#39;, dirname(__FILE__));
/** 
 为空数组就备份所有数据库
 */
$back_databases = array(
    &#39;learning&#39;,
    &#39;wp&#39;
);
$mysql_host = &#39;localhost&#39;;
$mysql_user = &#39;root&#39;;
$mysql_passwd = &#39;root&#39;;
if ($conn = mysql_connect($mysql_host, $mysql_user, $mysql_passwd)) {
    $databases = array();
    mysql_select_db(&#39;mysql&#39;, $conn);
    $query = mysql_query(&#39;show databases&#39;, $conn);
    while ($row = mysql_fetch_array($query)) {
        if (emptyempty($row)) continue;
        $database = $row[0];
        if (!emptyempty($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 . &#39;.gz&#39;)) {
            unlink($sql_dir . &#39;.gz&#39;);
        }
        system(&#39;gzip &#39; . $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[&#39;Create Table&#39;] . ";\r\n\r\n";
    $q3 = mysql_query("select * from `$table`");
    while ($data = mysql_fetch_assoc($q3)) {
        $keys = array_keys($data);
        $keys = array_map(&#39;addslashes&#39;, $keys);
        $keys = join(&#39;`,`&#39;, $keys);
        $keys = "`" . $keys . "`";
        $vals = array_values($data);
        $vals = array_map(&#39;addslashes&#39;, $vals);
        $vals = join("&#39;,&#39;", $vals);
        $vals = "&#39;" . $vals . "&#39;";
        $mysql.= "insert into `$table`($keys) values($vals);\r\n";
    }
    $mysql.= "\r\n";
}
$fp = fopen($filename, &#39;wb&#39;);
fputs($fp, $mysql);
fclose($fp);
include_once (&#39;lib/pclzip.lib.php&#39;);
$archive = new PclZip($filename . &#39;.zip&#39;);
$v_list = $archive->create($filename);
if ($v_list == 0) {
    die("Error : " . $archive->errorInfo(true));
}
if (file_exists($filename)) {
    unlink($filename);
}
echo "Mysql&#39;s backup successfully to " . $filename . ".zip";
?>
登入後複製

Zip打包备份代码, 几乎就是全抄demo, 太方便了, 代码如下 :

<?PHP  
include_once(&#39;lib/pclzip.lib.php&#39;);  
$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.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!