Php 从命令行中删除单个mysql表

Php 从命令行中删除单个mysql表,php,mysql,shell,console,Php,Mysql,Shell,Console,我试图从php脚本中运行以下行: for($i=0;$i<count($table_list);$i++){ $command1='mysql -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' DROP TABLE `'.$table_list[$i].'`'; exec($command1); } 我也试着用引号引表名

我试图从php脚本中运行以下行:

for($i=0;$i<count($table_list);$i++){
        $command1='mysql -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' DROP TABLE `'.$table_list[$i].'`';
        exec($command1);
}
我也试着用引号引表名,但同样的事情——运气不好


有人能告诉我这里缺少什么吗?

我想你的问题是因为你没有给合适的空间

你有这个

mysql -hlocalhost -uUSERNAME -pPASSWORD DATABASENAME DROP TABLE products
应该是这样的

mysql -h localhost -u USERNAME -p PASSWORD DATABASENAME DROP TABLE products

参见
-h&-u&-p
在前后都有一个合适的空间我想你的问题是因为你没有给合适的空间

你有这个

mysql -hlocalhost -uUSERNAME -pPASSWORD DATABASENAME DROP TABLE products
应该是这样的

mysql -h localhost -u USERNAME -p PASSWORD DATABASENAME DROP TABLE products
请参见
-h&-u&-p
在前面和后面有一个适当的空格,您需要使用-e/-execute:

--execute=语句,-e语句执行该语句并退出。这个 默认输出格式类似于使用--batch生成的格式。见第节 4.2.3.1“在命令行上使用选项”,例如。使用此选项,mysql不使用历史文件

从控制台尝试以下操作:
mysql-h localhost-u USERNAME-p PASSWORD-e“DROP TABLE products”数据库名

或固定脚本:

for($i=0;$i<count($table_list);$i++){
        $command1='mysql -h '.$mysqlHostName .' -u ' .$mysqlUserName .' -p ' .$mysqlPassword .' -e "DROP TABLE `'.$table_list[$i].'`" '.$mysqlDatabaseName ;
        exec($command1);
}
对于中的($i=0;$i),需要使用-e/--execute:

--execute=statement,-e语句执行该语句并退出 默认输出格式类似于使用--batch生成的格式。请参阅第节 4.2.3.1“在命令行上使用选项”,对于一些示例。使用此选项,mysql不使用历史文件

从控制台尝试以下操作:
mysql-h localhost-u USERNAME-p PASSWORD-e“DROP TABLE products”数据库名

或固定脚本:

for($i=0;$i<count($table_list);$i++){
        $command1='mysql -h '.$mysqlHostName .' -u ' .$mysqlUserName .' -p ' .$mysqlPassword .' -e "DROP TABLE `'.$table_list[$i].'`" '.$mysqlDatabaseName ;
        exec($command1);
}

用于($i=0;$i既然你在使用php,为什么不直接使用php mysql库来删除表?@hawshy说实话-我不知道。整个脚本是一年多前构建的,在我们两周前迁移到新服务器之前运行得很好。我想这是有原因的,但我不记得了……我想你应该转换改为使用php drop table脚本。你能解决这个问题吗?你知道如何从exec命令调用mysql吗?既然你在使用php,为什么不直接使用php mysql库来删除表呢?@hawshy说实话-我不知道。整个脚本是一年多前构建的,在我们之前一直运行良好两周前移动到一个新服务器。我想这是它以这种方式构建的原因,但我不记得了…我想你应该改为使用php drop table脚本。你能解决这个问题吗?你知道如何从exec命令调用mysql吗?谢谢-这很接近,但仍然不存在。首先,我必须重新设置ve引用表名,如下面的
“DROP table'.$table\u list[$i]”
,否则它就不起作用了。当我在php中运行它时,它什么也不起作用。但是,当我回显命令并在控制台中运行该命令时,它工作得很好。你知道为什么吗?使用mysql二进制文件的完整路径:
/path/to/mysql-h…
没有什么区别。我认为它与我的服务器的mysql有关,不知道是什么。我是tr我想运行一个简单的导入,但也失败了。当我运行这个命令时,
/usr/bin/mysql-u USERNAME-p PASSWORD DATABASENAME
,它不起作用。我只是得到了帮助文本,就好像我运行了
mysql-?
你看到这行有什么错误吗?我也尝试过使用mysql w/o path并尝试过输入g文件路径用引号括起来。可能与服务器有关吗?我看不出该行有任何错误。如果您看到相同的a-?这意味着您没有给出正确的命令行选项。谢谢-这非常接近,但仍然不在那里。首先,我必须从表名中删除引号,如“DROP table”。$table\u list[$I]”
,否则它就不起作用了。当我在php中运行它时,它什么也不起作用。但是,当我回显命令并在控制台中运行该命令时,它工作得很好。你知道为什么吗?使用mysql二进制文件的完整路径:
/path/to/mysql-h…
没有什么区别。我认为它与我的服务器的mysql有关,不知道是什么。我是tr我想运行一个简单的导入,但也失败了。当我运行这个命令时,
/usr/bin/mysql-u USERNAME-p PASSWORD DATABASENAME
,它不起作用。我只是得到了帮助文本,就好像我运行了
mysql-?
你看到这行有什么错误吗?我也尝试过使用mysql w/o path并尝试过输入文件路径用引号括起来。可能与服务器有关吗?我看不出该行有任何错误。如果您看到相同的a-,则表示您没有给出正确的命令行选项。