❶ php資料庫備份還原失敗~
php簡單備份與還原MySql的方法具體如下:
一、備份:
<?php
header("content-Type:text/html;charset=utf-8");
//備份資料庫
$host="localhost";
$user="root";//資料庫賬號
$password="123456";//資料庫密碼
$dbname="test";//資料庫名稱
//這里的賬號、密碼、名稱都是從頁面傳過來的
if(!mysql_connect($host,$user,$password))//連接mysql資料庫
{
echo'資料庫連接失敗,請核對後再試';
exit;
}
if(!mysql_select_db($dbname))//是否存在該資料庫
{
echo'不存在資料庫:'.$dbname.',請核對後再試';
exit;
}
mysql_query("setnames'utf8'");
$mysql="setcharsetutf8; ";
$q1=mysql_query("showtables");
while($t=mysql_fetch_array($q1)){
$table=$t[0];
$q2=mysql_query("showcreatetable`$table`");
$sql=mysql_fetch_array($q2);
$mysql.=$sql['CreateTable']."; ";
$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.="insertinto`$table`($keys)values($vals); ";
}
}
$filename="data/".$dbname.date('Ymjgi').".sql";//存放路徑,默認存放到項目最外層
$fp=fopen($filename,'w');
fputs($fp,$mysql);
fclose($fp);
echo"數據備份成功";
?>
二、還原
<!--
author:果凍
qq:52091199
blog:http://wyg517.blog.163.com
-->
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<?php
$filename="test20101216923.sql";
$host="localhost";//主機名
$user="root";//MYSQL用戶名
$password="123456";//密碼
$dbname="test";//在此指定您要恢復的資料庫名,不存在則必須先創建,請自已修改資料庫名
mysql_connect($host,$user,$password);
mysql_select_db($dbname);
$mysql_file="data/".$filename;//指定要恢復的MySQL備份文件路徑,請自已修改此路徑
restore($mysql_file);//執行MySQL恢復命令
functionrestore($fname)
{
if(file_exists($fname)){
$sql_value="";
$cg=0;
$sb=0;
$sqls=file($fname);
foreach($sqlsas$sql)
{
$sql_value.=$sql;
}
$a=explode("; ",$sql_value);//根據"; "條件對資料庫中分條執行
$total=count($a)-1;
mysql_query("setnames'utf8'");
for($i=0;$i<$total;$i++)
{
mysql_query("setnames'utf8'");
//執行命令
if(mysql_query($a[$i]))
{
$cg+=1;
}
else
{
$sb+=1;
$sb_command[$sb]=$a[$i];
}
}
echo"操作完畢,共處理$total條命令,成功$cg條,失敗$sb條";
//顯示錯誤信息
if($sb>0)
{
echo"<hr><br><br>失敗命令如下:<br>";
for($ii=1;$ii<=$sb;$ii++)
{
echo"<p><b>第".$ii."條命令(內容如下):</b><br>".$sb_command[$ii]."</p><br>";
}
}//-----------------------------------------------------------
}else{
echo"MySQL備份文件不存在,請檢查文件路徑是否正確!";
}
}
?>
❷ php,mysql資料庫備份和還原的最理想方式,類似phpadmin的代碼
一、備份資料庫並下載到本地【db_backup.php】
復制代碼 代碼如下:
<?php
// 設置SQL文件保存文件名
$filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql";
// 所保存的文件名
header("Content-disposition:filename=".$filename);
header("Content-type:application/octetstream");
header("Pragma:no-cache");
header("Expires:0");
// 獲取當前頁面文件路徑,SQL文件就導出到此文件夾內
$tmpFile = (dirname(__FILE__))."\\".$filename;
// 用MySQLDump命令導出資料庫
exec("mysqlmp -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname > ".$tmpFile);
$file = fopen($tmpFile, "r"); // 打開文件
echo fread($file,filesize($tmpFile));
fclose($file);
exit;
?>
二、還原資料庫【db_restore.php】
復制代碼 代碼如下:
<form id="form1" name="form1" method="post" action="">
【資料庫SQL文件】:<input id="sqlFile" name="sqlFile" type="file" />
<input id="submit" name="submit" type="submit" value="還原" />
</form>
<?php
// 我的資料庫信息都存放到config.php文件中,所以載入此文件,如果你的不是存放到該文件中,注釋此行即可;
require_once((dirname(__FILE__).'/../../include/config.php'));
if ( isset ( $_POST['sqlFile'] ) )
{
$file_name = $_POST['sqlFile']; //要導入的SQL文件名
$dbhost = $cfg_dbhost; //資料庫主機名
$dbuser = $cfg_dbuser; //資料庫用戶名
$dbpass = $cfg_dbpwd; //資料庫密碼
$dbname = $cfg_dbname; //資料庫名
set_time_limit(0); //設置超時時間為0,表示一直執行。當php在safe mode模式下無效,此時可能會導致導入超時,此時需要分段導入
$fp = @fopen($file_name, "r") or die("不能打開SQL文件 $file_name");//打開文件
mysql_connect($dbhost, $dbuser, $dbpass) or die("不能連接資料庫 $dbhost");//連接資料庫
mysql_select_db($dbname) or die ("不能打開資料庫 $dbname");//打開資料庫
echo "<p>正在清空資料庫,請稍等....<br>";
$result = mysql_query("SHOW tables");
while ($currow=mysql_fetch_array($result))
{
mysql_query("drop TABLE IF EXISTS $currow[0]");
echo "清空數據表【".$currow[0]."】成功!<br>";
}
echo "<br>恭喜你清理MYSQL成功<br>";
echo "正在執行導入資料庫操作<br>";
// 導入資料庫的MySQL命令
exec("mysql -u$cfg_dbuser -p$cfg_dbpwd $cfg_dbname < ".$file_name);
echo "<br>導入完成!";
mysql_close();
}
?>
❸ 用PHP怎麼將MYSQL中的指定資料庫備份下來
下載phpmyadmin ,他是用php語言開發的管理mysql的工具,有導出、導入等功能,解壓復制一份到你的任意一個網站目錄下,通過目錄訪問就可以了,
當然你也可以使用帝國的資料庫備份工具,也很方便的,特別是對於資料庫備份這個功能,比phpmyadmin還強大 予學PHP培訓
❹ PHP+MYSQL的資料庫如何備份和還原
有很多軟體可以使用,比如phpmyadmin,sqlyog等等
下載一個phpmyadmin並且配置好(網上有如何配置),其中就有備份還原資料庫的圖標,很簡單
補充:----------------------
對啊,點導出,然後執行就可以了啊
❺ PHP網站怎麼備份資料庫直接在phpmyadmin導出數據算不算備份網站資料庫
你這個是算資料庫備份的,如果你對php環境不太清楚,可以使用phpwamp一步到位,默認自帶網站搬家,網站備份等教程,可以自定義設置php版本。
❻ php備份恢復MYSQL資料庫
1、把資料庫sql文件查找 CHARACTER
替換成 CHARACTER SET utf8 或 CHARACTER = utf8
2、到phpmyadmin 創建一個新的資料庫的時候應該選 整理 latin1_swedish_ci
3、到phpmyadmin 進入新建的資料庫,導入資料庫文件
4、用UltraEdit轉換所有ANSI格式的php源碼文件為UTF-8格式:File --> Conversions --> ASCII to UTF-8
5、在php源碼文件中必須加入:
在<head>後加入
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6、在連接數據DB的文件中找到類似一下代碼
$host="localhost"; $DBname="aa"; //資料庫名字$user= "root"; //用戶名$passwd = ""; //密碼$link = mysql_connect($host,$user,$passwd) or die ("Fail");
$db = mysql_select_db($DBname, $link) or die ("Fail"); //連接
// 要在真正query DB取出資料前,必須加入下面3行mysql_query才可以:
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER_SET_CLIENT=utf8");
mysql_query("SET CHARACTER_SET_RESULTS=utf8");
7、在php源碼中, 如有應用htmlentities和htmlspecialchars時需要注意:
要似如下格式:
$chars = htmlentities($chars,ENT_QUOTES,"UTF-8");
$chars = htmlspecialchars($chars,ENT_QUOTES,"UTF-8");
如有應用addslashes()或mysql_real_escape_string()記得用以下:
$chars = stripslashes($chars);
另外如果需要的話還可設置:
1、php.ini 設定php中的語系為 (記得restart)
default_charset = "utf-8"
2、my.ini 設定MySQL中的語系為 (記得restart)
[mysqld]
init_connect='SET NAMES utf8'
default-character-set=utf8
[client]
default-character-set = utf8
本人剛接觸PHP+MySQL,才疏學淺,希望能給有需要的得到幫助。
請大家指點,謝謝!
❼ 如何使用PHP自動備份資料庫
使用mysqlmp函數
mysqlmp -u username -p dbname table1 table2 ... > BackupName.sql
dbname參數表示資料庫的名稱
table1和table2參數表示需要備份的表的名稱,為空則整個資料庫備份;
BackupName.sql參數表設計備份文件的名稱,文件名前面可以加上一個絕對路徑。通常將資料庫被分成一個後綴名為sql的文件。
備份資料庫的主要過程:
切換到對應的資料庫;
使用show create table tableName,獲得表結構,寫到文件中;
然後查詢所有的表數據,循環生成相對應sql語句,寫到文件中;
試運行生成的sql文件。
❽ php寫mysql備份表注釋和行注釋出亂碼問題
最好不要加表注釋。建立完善的數據結構說明文檔。是個好選擇。
以前碰到過 phpmyadmin 版本不一樣。無法正確導入sql 的問題。
檢查導出的 生成文件 是否是 utf-8 編碼。。資料庫建立也採用utf-8 。然後你在用程序導入SQL 試試看。
需要檢查 :SQL 文件。資料庫編碼。以及導入程序。是否都是 utf8 編碼的。可以用 editplus 或 ultraedit 進行編碼轉換!
❾ php 使用 備份文件
只能拷貝文件, 文件夾拷貝不了。