PHP備份數據庫為SQL文件
這是一個將指定數據庫里的所有表備份為一個SQL文件,可下載。
<!?php/** 備份數據庫結構 **/
/* 函數名稱:table2sql() 函數功能:把表的結構轉換成為SQL 函數參數:$table: 要進行提取的表名 返 回 值:返回提取后的結果,SQL集合 函數作者:heiyeluren */ function table2sql($table) { global $db; $tabledump = "DROP TABLE IF EXISTS $table;\n"; $createtable = $db--->query("SHOW CREATE TABLE $table"); $create = $db->fetch_row($createtable); $tabledump .= $create[1].";\n\n"; return $tabledump; } /****** 備份數據庫結構和所有數據 ******/ /* 函數名稱:data2sql() 函數功能:把表的結構和數據轉換成為SQL 函數參數:$table: 要進行提取的表名 返 回 值:返回提取后的結果,SQL集合 函數作者:heiyeluren */ function data2sql($table) { global $db; $tabledump = "DROP TABLE IF EXISTS $table;\n"; $createtable = $db->query("SHOW CREATE TABLE $table"); $create = $db->fetch_row($createtable); $tabledump .= $create[1].";\n\n"; $rows = $db->query("SELECT * FROM $table"); $numfields = $db->num_fields($rows); $numrows = $db->num_rows($rows); while ($row = $db->fetch_row($rows)) { $comma = ""; $tabledump .= "INSERT INTO $table VALUES("; for($i = 0; $i < $numfields; $i++) { $tabledump .= $comma."'".mysql_escape_string($row[$i])."'"; $comma = ","; } $tabledump .= ");\n"; } $tabledump .= "\n"; return $tabledump; }?>
<!--?php
$host="localhost"; //主機名
$user="root"; //MYSQL用戶名
$password="root"; //密碼
$dbname="dedecmsv4"; //備份的數據庫mysql_connect($host,$user,$password);
mysql_select_db($dbname);$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\r\n";#DDL$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";}
$filename=date('Ymd')."_".$dbname.".sql"; //文件名為當天的日期
$fp = fopen($filename,'w');
fputs($fp,$mysql);
fclose($fp);
echo "數據備份成功,生成備份文件".$filename;
?></pre>