为什么不用PHP的系统执行命令()

时间:2013-11-12 13:44:41

标签: apache

OK简介: 我在一台名为“Remote”(Windows 2000 Pro)的机器上运行了Apache和mysql的Apache

  

Apache 2.0.64 - php 5.2.4 - mysql 4.0.21

我想执行这个命令:

  

mysql --host = localhost --user = ??? --password = ??? <   C:\本地主机\ 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连接到'Remote'时,打开命令提示符(cmd),重新输入我的命令(先前输入),一切都正确执行,表(my_table和内容)消失了,表格被重新创建重建新栏目。

但是我不想搞乱VNC,因为自动化并不容易,我想用php(通过网页)执行这个命令。第一个想法是:

使用system( )命令,但将命令粘贴到system( )函数不起作用:(

有谁知道为什么?

我还尝试了exec( )shell_exec( )而没有得到正面结果。

其他信息:

  • 我希望用php完成,bcs客户端(用户)我用mysql连接php有权并且应该可以添加/删除表
  • 我发现将表格快速重置为默认值
  • 非常有用
  • 我不想使用VNC,bcs我必须在我连接到'Remote'的每台机器上安装(网页浏览器已经足够了)
  • 我真的不想重新安装或升级应用程序到新版本

1 个答案:

答案 0 :(得分: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) )");