2011-08-16 33 views
0

我正在嘗試使用PHP中的系統命令導入mysqldump文件。以下是我的工作方式 -使用PHP導入Mysql

$command = "F:\System 1.1\server\mysql\bin\mysql.exe -h localhost -P 7188 -u username -ppassword <dbname> < F:\System 1.1\backup.sql"; 
system($command,$return) 

$ return的值是1.語法是否不正確?另外,有沒有其他方法可以通過PHP導入完整的數據庫?

(因爲誰將會是最終使用該程序的用戶可能沒有安裝MySQL和存在的路徑,我給的完整路徑的mysql.exe。)

+0

你有沒有在cmd中試過whis命令? –

+0

'系統命令返回1'通過這個,你的意思是'$ return'是1,或者函數返回1(這將是最後一行輸出)? –

+0

Igoris - 我已經在cmd中嘗試過它,它的工作原理。 Rocket - $ return是1. – ChaosMaker

回答

0

的幾點思考:

  • 如果函數返回1(true),則表示成功......我假設您檢查了它不起作用?
  • 在MySql中有源碼命令,例如使用數據庫;源path_to_file;儘管在這種情況下可能無法幫助您直接運行mysql.exe。
+0

'系統'應該返回輸出的最後一行或錯誤時返回FALSE。 '$ return'是返回值。任何不爲零的返回值都是失敗的。這很奇怪,但返回值1不成功。 –

0

你的文件路徑包含F:\System 1.1空間,而且有可能導致問題的PHP。你應該把它們用下面的引號括起來。作爲路徑分隔符的雙反斜槓也可能是必需的。

$command = "\"F:\System 1.1\server\mysql\bin\mysql.exe\" -h localhost -P 7188 -u username -ppassword <dbname> < \"F:\System 1.1\backup.sql\""; 
//---------^^^^---------------------------------------^^^^ Also in the backup.sql path... 

當PHP執行你的命令,不帶引號的,它認爲:

F:\System 

和失敗,因爲這是一個無效的命令。

+0

好的。 所以當我回應命令這裏是它看起來像什麼 - 「F:\ System 1.1 \ server \ mysql \ bin \ mysql.exe」-h localhost -P 7188 -u用戶名-ppassword <「F:\ System 1.1 \ backup.sql「 這不工作嗎? – ChaosMaker

+0

@ChaosMaker Windows能否正確解析'-password'?如果兩者之間沒有空間,我認爲它會窒息。 –

+0

是的我認爲,因爲我使用mysqldump以類似的方式生成備份,並正確生成sql文件。 – ChaosMaker