2017-10-28 161 views
-2

我在本地服務器備份數據庫從PHP

$dump_path = "backups"; 
$host = "localhost"; 
$user = "root"; 
$pass = ""; 
$command=$dump_path.'mysqldump -h '.$host.' -u '.$user.' dental > dental_b.sql'; 
if (system($command)) { 
    echo "YES" ; 
} else { 
    echo "Error" ; 
} 

上測試該腳本,但爲什麼不是該腳本執行,並顯示錯誤雖然從數據庫中的所有數據是真實的。

+0

你想執行什麼命令?現在它是'backupsmysqldump -h localhost -u root dental> dental_b.sql'。你確定'$ dump_path'應該是命令的前綴嗎? –

+0

我知道了,但是我需要解決這個問題 –

回答

1

我敢肯定,如果您在本地主機上使用mysqldump,則不需要主機選項。你連接你的命令的方式看起來讓我感到困惑。讓我告訴你什麼對我有用。我一直用這個:

<?php 

$user = "root"; 
$pass = ""; 
$database = "dental"; 

// File name 
$file_name = 'dental_b.' . date('mdY.Hia') . '.sql.gz'; 

// Storage directory 
$storage_dir = __DIR__ . '/backups'; 
if(! is_dir($storage_dir)) 
    mkdir($storage_dir, 0777, TRUE); 

// Absolute path to new file 
$absolute_path = $storage_dir . '/' . $file_name; 

// Create the backup file 
exec('mysqldump -u ' . $user . 
    ' -p' . $pass . 
    ' ' . $database . 
    ' | gzip > ' . $absolute_path); 

是的,我gzipping文件。我想你會發現這是存儲,電子郵件一個不錯的選擇,等

編輯---

如果不使用密碼,你不應該使用-p。在這種情況下,你想改變命令。

+0

我很感謝詳細的解答 –