php備份mysql數據庫是很多個人站長網站所具備的功能,當然如果你要備份幾個GB或更大的數據庫時php備份方法感覺有點吃力了.
PHP 備份 mysql 數據庫的源代碼,在完善的 PHP+Mysql 項目中,在后臺都會有備份 Mysql 數據庫的功能,有了這個功能,我們就不用再使用 FTP 或者使用 mysql 的管理工具進行 mysql 數據庫下載了,非常方便,對于想做這樣功能的 phper 來說,其實原理并不是很麻煩,主要有以下三點.
一,一定要連接數據庫,這樣才能通過 SQL 語句打印出 mysql 數據表.
二,通過 PHP 的文件操作函數進行數據庫的操作,包括創建保存 mysql 數據庫的文件夾,這一步主要就是新建文件的步驟.
三,將 mysql 數據庫進行保存下來.
通過這樣的原理,我們就可以制作出一個屬于自己的備份數據庫的功能了,下面是一個php數據庫備份的源代碼,主要結構是依據上面的三點進行的,源碼是由幾個方法組成的,我們也可以將其封裝成為自己的 php 類,舉一反三,希望 phper 能在此基礎上設計出適合自己的 mysql 數據庫備份功能源碼,代碼如下:
- <?php
- /** 備份數據庫 生成.sql文件
- * @param $browseinfo String 瀏覽器版本
- * return $browseinfo
- */
- function createsql(){
- //創建個日期
- $timer1 = time();
- $path = "my_sql/";
- $content =gettables();
- $filename = $path.$timer1.".sql";
- //先判斷文件夾在不在
- if(!file_exists($path)){
- //如果不存在生成這個目錄,0777表示最大的讀寫權限
- if(mkdir($path,0777)){
- //echo"新建立目錄";
- }//開源代碼Vevb.com
- }
- //判斷文件是否存在
- if(!file_exists($filename)){
- //如果文件不存在,則創建文件
- @fopen($filename,"w");
- //判斷文件是否可寫
- if(is_writable($filename)){
- //打開文件以添加方式即"a"方式打開文件流
- if(!$handle = fopen($filename,"a")){
- echo"文件不可打開";
- exit();
- }
- if(!fwrite($handle,$content)){
- echo"文件不可寫";
- exit();
- }
- //關閉文件流
- fclose($handle);
- echo "生成文件并保存首次內容";
- }else {
- echo"文件$filename不可寫";
- }
- }else{
- if(is_writable($filename)){
- //以添加方式打開文件流
- if(!$handle = fopen($filename,"a")){
- echo"文件不可打開";
- exit();
- }
- fclose($handle);
- }else{
- echo "文件$filename不可寫";
- }
- }
- }
- /**
- * 獲得數據庫中的表名
- * return $str 循環生成數據庫建表和插入值的sql語句
- */
- function gettables(){
- $mysqli = new mysqli("localhost","root","","bbs");
- $str = '';
- if ($result = $mysqli->query("SHOW TABLES")) {
- while($row = $result->fetch_row()){
- $str.= data2sql($row[0])."<br/>";
- }
- $mysqli->close();
- return $str;
- }
- }
- /**
- * 獲得數據庫中的表結構和值
- * return $tabledump 返回一個表中的結構和值的sql語句
- */
- function data2sql($table){
- $mysqli = new mysqli("localhost","root","","bbs");
- /* check connection */
- if (mysqli_connect_errno()) {
- printf("Connect failed: %sn", mysqli_connect_error());
- exit();
- }
- $tabledump = "DROP TABLE IF EXISTS $table;n";
- $result = $mysqli->query("SHOW CREATE TABLE $table");
- $create = $result->fetch_row();
- $tabledump .= $create[1].";nn";
- $rows = $mysqli->query("SELECT * FROM $table");
- $numfields = $rows->num_rows;
- while ($row = $rows->fetch_row()){
- $comma = "";
- $tabledump .= "INSERT INTO $table VALUES(";
- for($i = 0; $i < $numfields; $i++)
- {
- $tabledump .= $comma."'".mysql_escape_strin
- g($row[$i])."'";
- $comma = ",";
- }
- $tabledump .= ");n";
- }
- $tabledump .= "n";
- return $tabledump;
- }
- ?>
新聞熱點
疑難解答