2011-08-16 14 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) 

$戻り値は1です。構文が間違っていますか?また、PHPを介して完全なデータベースをインポートする他の方法はありますか?

(最終的にはプログラムを使用するユーザーは、MySQLをインストールして、パスに存在していない可能性がありますので、私はmysql.exeへのフルパスを与えている。)

+0

あなたはcmdでwhisコマンドを試しましたか? –

+0

'システムコマンドは1を返しています 'これは' $ return'が1であるか、関数が1を返すことを意味します(出力の最後の行ですか? –

+0

Igoris - 私はcmdで試して、それが動作します。 Rocket - $ return is 1。 – ChaosMaker

答えて

0

いくつかの考え:

  • 関数が1(真)を返す場合、これは成功を示しています...私はあなたがそれが動作しないことを確認したと仮定しますか?
  • MySqlにsourceコマンドがあります(例:use database; source path_to_file;この場合、mysql.exeを直接実行したいので、これは役に立たないかもしれません。
+0

'system'は出力の最後の行を返すか、エラーの場合はFALSEを返します。 '$ return'は戻り値です。ゼロ以外の値の戻り値は失敗です。それは変ですが、戻り値1は成功しません。 –

0

ファイルパスには空白が含まれており、PHPで問題が発生する可能性があります。次のように引用符で囲む必要があります。パス区切り文字として二重バックスラッシュも必要な場合があります。これは無効なコマンドであるため、

F:\System 

をして失敗します。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... 

、それは見ています。

+0

大丈夫です。 コマンドをエコーし​​たときの表示は、 "F:¥System 1.1¥server¥mysql¥bin¥mysql.exe" -h localhost -P 7188 -u username -ppassword <"F:\ System 1.1 \ backup.sql " どちらも動作していませんか? – ChaosMaker

+0

@ChaosMaker Windowsは '-ppassword'を正しく解析しますか?私はそれの間にスペースがなければそれが窒息だと思った。 –

+0

はい私は、mysqldumpを使って同様の方法でバックアップを生成しているので、SQLファイルを正しく生成していると思います。 – ChaosMaker

関連する問題