PHPからMySQLに登録されているテーブルをバックアップしたいと思います。


それで以下のようなコードを書いたのですが、実行されません。

$sql = "mysqldump table_name > 'c:\backup.sql' -u root -p aaaa";
$res = mysql_query($sql,$conn);

※「table_name」は、バックアップしたいテーブル名です。

コマンドブックを見ると、ユーザ名やパスワードも入れるので、
PHPからは実行できないのかな?っと思っているのですが、もし可能ならご指摘、修正お願いします。

【テスト環境】
php5.2.0
MySQL4.0.26
WindowsXP上のApache2.0.58でテスト

回答の条件
  • 1人2回まで
  • 登録:2007/09/15 10:37:23
  • 終了:2007/09/22 10:40:03

回答(4件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/09/15 11:43:19

ポイント23pt
$sql = "mysqldump table_name > 'c:\backup.sql' -u root -p"; aaaa";

それ SQL じゃなくてコマンドだから。MySQL に渡しても何の意味もない。


やるなら

$command = "mysqldump table_name > 'c:\backup.sql' -u root -p"; 
system($command);

PHP: system - Manual

とか。

id:kt26

回答ありがとうございます。SQLファイルは作成できるようになったのですが、中身が空のファイルが出来るだけです。

ちょっと使い方がよくわからないので、マニュアルを頼りに勉強してみます。

2007/09/15 20:42:00
id:thrillseeker No.2

thrillseeker回答回数328ベストアンサー獲得回数372007/09/15 12:41:25

ポイント23pt

mysqldump はコマンドラインからバックアップを行う為の PHP とは

独立した単体のプログラムですので、敢えてやるとしたら

$command = "mysqldump table_name > 'c:\backup.sql' -u root -p aaaa";
system("$command");

となると思いますが、セキュリティ上かなり問題のある方法です。

PHP でバックアップを実現するのが主目的で PHP の学習が目的では

無いのなら、phpMyAdmin を導入するのが簡単ですよ。

http://wiz.syscon.co.jp/phpMyAdminSetup.html

http://www.ddsystems.info/ex/ex_cgi/220401.html

id:kt26

phpMyAdminはずっと利用しています。アドバイスありがとうございました。

2007/09/15 20:42:31
id:KUROX No.3

KUROX回答回数3542ベストアンサー獲得回数1402007/09/16 06:52:54

ポイント22pt

■phpMyBackupProというオープンソースのプログラム

http://imai.studiobrain.net/2006/12/13/87

こいうのを使ってみてはどうでしょうか?

id:kt26

それを使っていて前にはてなでも質問したのですが、なぜかcronでの処理が利きません。バックアップ用のファイルに直接アクセスしたら、バックアップファイルは作られるのですが‥。


なので、簡易的に出来る方法はないかと思い、質問した次第です。

2007/09/18 14:29:41
id:huruyosi No.4

huruyosi回答回数30ベストアンサー獲得回数32007/09/17 17:53:59

ポイント22pt

1.の方法でダンプファイルの中身が空になるは-pオプションでプロンプトを表示してパスワードの入力を促しているものの、system関数でmysqldumpを実行しているためにパスワード入力が行えていません。

そこで、


$command = "mysqldump -u root --password=rootのパスワード データベース名 table_name > 'c:\backup.sql'"; 
system($command);

としては如何でしょうか

http://dev.mysql.com/doc/refman/5.1/ja/mysqldump.html

id:kt26

$command="mysqldump -u root --password=aaaa test_tb table_name > 'c:\backup.sql' ";


と言うようにしてみたのですが、空のファイルのままでした。

2007/09/18 14:40:14

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません