0

簡単な紹介: 「Remote」(Windows 2000 Pro) という名前のマシンで Apache を php と mysql で実行しています。

Apache 2.0.64 - PHP 5.2.4 - mysql 4.0.21

そして、私はこのコマンドを実行したい:

mysql --host=localhost --user=??? --パスワード=??? < C:\localhost\www_install.sql

ファイル_install.sqlは単純です:

USE my_database;
DROP TABLE my_table;
CREATE TABLE my_table (id INT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY(id) );
ALTER TABLE my_table ADD COLUMN datetime DATETIME;

...そして、この方法でさらにいくつかの列を追加します。

したがって、VNC を使用して「リモート」に接続し、コマンド プロンプト (cmd) を開き、コマンド (以前に入力したもの) を再入力すると、すべてが正しく実行され、テーブル (my_table とコンテンツ) がなくなり、再構築された新しい列でテーブルが再作成されます。 .

しかし、自動化はそれほど簡単ではないため、VNCをいじりたくないので、phpを使用して(Webページ経由で)このコマンドを実行したいと考えています。最初のアイデアは次のとおりでした。

コマンドを使用しますsystem( )が、コマンドをsystem( )関数に貼り付けても機能しません:(

誰かが理由を知っていますか?

私も肯定的な結果なしでexec( )andを試しました。shell_exec( )

追加情報:

  • 私はphpを使用してそれを行いたい、クライアント(ユーザー)のbcs 私はphpをmysqlに接続し、権限があり、テーブルを追加/削除できるはずです
  • テーブルをデフォルトにすばやくリセットできると便利だと思います
  • VNC を使用したくありません。「リモート」に接続する各マシンに bcs をインストールする必要があります (Web ブラウザーで十分です)。
  • アプリを再インストールしたり、新しいバージョンにアップグレードしたりしたくありません
4

1 に答える 1

0

PHP で mysql 呼び出しを行うときに、なぜ exec() または system() を使用しようとしているのですか? PHP には、これに対処する関数があります。

$mysqli = new mysqli("localhost", "user", "password", "my_database");
$mysqli->query("DROP TABLE my_table");
$mysqli->query("CREATE TABLE my_table (id INT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY(id) )");
于 2013-11-12T14:11:14.213 に答える