0

指定されたコードは Windows システムで実行可能ですか? Linuxコマンドのようです

   echo 'create database foo2' | mysql -uroot
    mysqldump --skip-triggers -uroot foo | mysql -uroot foo2

編集済み 次のコードを実行していますが、期待どおりの結果が得られません..

<?php 
mysql_connect('localhost','root','********');
echo 'create database pranav_chk'. | mysql -u root
    mysqldump --skip-triggers -u root pranav_test | mysql -u root pranav_chk;
 ?>
4

3 に答える 3

2

このコードでは、次の 3 つのコマンド ライン機能を使用します。

  • echoコマンド_
  • コマンドをパイプ (|記号)で接続する
  • コマンドmysqlラインクライアント

3 つすべてが Windows と Linux で利用可能であり、(ここで使用されている程度で) 同じように動作するため、コードは実際に移植可能です。

編集:コードはシェルで実行する必要があります。PHP スクリプトに入れることはできません。exec()次のようなものを使用する必要があります。

<?php
  exec("echo 'create database foo2' | mysql -uroot");
  exec("mysqldump --skip-triggers -uroot foo | mysql -uroot foo2");
?>

ただし、mysql_connect()前の呼び出しは、PHP スクリプトに対してのみ有効であるため、何の役にも立ちません。コマンドラインから直接認証を行う必要があります。または、それを使用して最初の行mysql_create_db()を置き換えることもできます。exec()

于 2010-05-05T06:28:40.913 に答える
1

3 ノート。

まず、PHP スクリプトのデータベース接続は外部システム コマンドと共有されません。

次に、コマンド ラインにパスワードを入力する必要があります。

3 つ目は、exec 関数を使用してコマンドを実行することです。

例えば:

<?php
$PASSWORD="YOURPASSWORD";
exec("echo 'create database foo2' | mysql -u root -p $PASSWORD");
?>

テストされていませんが、それが一般的な考え方です。

于 2010-05-05T07:50:42.140 に答える
1

mysql と mysqldump が Windows の PATH 変数にあると仮定すると、正常に動作するはずです。-u とルートの間にスペースを追加する必要がありますが。

于 2010-05-05T06:29:18.960 に答える