2012-10-25 94 views
1

以下是我現在的總代碼。我已經逃過了反斜槓,做了我認爲應該是正確的一切。mysqldump生成空文件

<?php 

include('conn.php'); 

mysql_select_db("landshop_formdata"); 

$dbname="landshop_clientdata"; 
$dbhost="localhost"; 
$dbuser="landshop_anitgop"; 
$dbpass="password"; 
//$root = realpath($_SERVER["DOCUMENT_ROOT"]); 
$backupFile =$dbname.".sql"; 
echo $backupFile."<br><br>"; 


//$dmp="C:\\Program Files\\EasyPHP-5.3.8.1\\mysql\\bin\\mysqldump.exe"; 

//$command = "$dmp --OPT -h$dbhost -u$dbuser -p$dbpass $dbname > $backupFile"; 

//system($command); 


$dmp = '"C:\Program Files\EasyPHP-5.3.8.1\mysql\bin\mysqldump.exe"'; 

$command = $dmp 
    . ' --opt -h '.$dbhost.' -u "'. $dbuser. '" -p "'. $dbpass.'" '. $dbname.' > "'. $backupFile. '"'; 
system($command); 


?> 

它還在生成0kb文件!怎麼了 ?!我試過所有選項!

+0

您忘記[逃避反斜槓](http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double) – fvu

+0

在'$ dbhost'和'$ dbuser'從一個空格開始? – air4x

+0

@fvu,你能解釋一下嗎? – user1407430

回答

1

嘗試這種情況:

$dmp = '"C:\Program Files\EasyPHP-5.3.8.1\mysql\bin\mysqldump.exe"'; 

$command = $dmp 
     . ' --opt -h ' 
     . $dbhost 
     . ' -u "' 
     . $dbuser 
     . '" -p "' 
     . $dbpass 
     . ' ' 
     . $dbname 
     . ' > "' 
     . $backupFile 
     . '"'; 
system($command); 

我加引號初始$dmp變量,以確保該命令執行(由於空格)正確地對mysqldump的。還爲用戶和傳遞添加引號(如果他們有空格)和備份文件(可能還包含空格)。

您可以進一步修改這個以適應您的需求。

+0

@fvu,試過以上...仍然給0kb文件! – user1407430

+0

實際上,當我運行代碼時,它只是加載...並加載...和....沒有更多的事情發生.. – user1407430

+0

@nikolas,其實,當我運行的代碼,它只是加載...和loading ...和....沒有更多的發生 – user1407430