我想到的有三種思路吧
創新互聯建站-專業網站定制、快速模板網站建設、高性價比儋州網站開發、企業建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式儋州網站制作公司更省心,省錢,快速模板網站建設找我們,業務覆蓋儋州地區。費用合理售后完善,10余年實體公司更值得信賴。
1.如果服務器允許mysqldump 并且沒有禁止PHP的shell_exec()這個函數的話
直接在PHP里面執行mysqldump就可以了。
2.通過mysql_query('show tables')的返回值遍歷每個表,循環對每個表使用查詢語句
select * into outfile '路徑/文件名' from 表名
缺點是這樣得到的是純數據,恢復數據的時候你需要額外再寫腳本
3.同樣通過show tables返回表名,遍歷每個表,通過select 語句查詢,然后逐條結果處理,比如手工添加drop table 和create table 以及insert into等等,然后再寫入文件。這樣得到的備份數據是比較接近mysqldump的結果的,各種工具都可以用來恢復數據。缺點是如果數據庫太大的話,效率不好說
總之我不推薦用PHP來實現mysql數據的備份,如果可能的話還是用mysqldump吧
先說代碼,我看了一下,代碼沒什么問題,至于你說的不備份,原因可能如下:
查詢無結果,測試辦法是在最外層的那個while語句結束后輸出查詢語句,即:
while?($t?=?mysql_fetch_array($q1))
{
//里面的代碼
}
echo?$mysql;//在這里輸出查詢結果,如果結果正常,則說明查詢有結果
$filename?=?"autobackup.sql";?//存放路徑,默認存放到項目最外層
然后就是另一個問題了,目標文件不可寫,你可以參考下面這樣的代碼
$filename?=?"autobackup.sql";?//存放路徑,默認存放到項目最外層
if(!file_exists($filename)?||?is_writable($filename))//如果文件不存在或可寫
{
$fp?=?fopen($filename,?'w');//打開或創建可寫文件
$mysql=str_replace("','','');","',null,null);",$mysql);
fputs($fp,?$mysql);//寫入
fclose($fp);
}
else
{
echo?"文件?$filename?不存在或不可寫";
}
如果嘗試發現仍有問題,請再追問
使用mysqldump函數
mysqldump -u username -p dbname table1 table2 ... ? BackupName.sql
dbname參數表示數據庫的名稱
table1和table2參數表示需要備份的表的名稱,為空則整個數據庫備份;
BackupName.sql參數表設計備份文件的名稱,文件名前面可以加上一個絕對路徑。通常將數據庫被分成一個后綴名為sql的文件。
備份數據庫的主要過程:
切換到對應的數據庫;
使用show create table ?tableName,獲得表結構,寫到文件中;
然后查詢所有的表數據,循環生成相對應sql語句,寫到文件中;
試運行生成的sql文件。
文章名稱:php+數據庫自動備份 php自帶數據庫
文章來源:http://vcdvsql.cn/article6/hepdog.html
成都網站建設公司_創新互聯,為您提供虛擬主機、企業建站、ChatGPT、全網營銷推廣、網站營銷、網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯