从命令行删除单个mysql表

时间:2015-07-30 04:15:38

标签: 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);
}

之前已经创建了一个包含表名的数组。

没有任何事情发生,表格不会被删除。当然,exec()已启用。

当我尝试从控制台运行以下命令时,我只是获取有关如何使用mysql命令的说明(就像我使用mysql -?一样):

mysql -hlocalhost -uUSERNAME -pPASSWORD DATABASENAME DROP TABLE products

我也尝试将表名放在引号中,但同样的事情 - 没有运气。

有谁能告诉我我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

我认为你的问题是因为你没有给出适当的空间

你有这个

mysql -hlocalhost -uUSERNAME -pPASSWORD DATABASENAME DROP TABLE products

它应该像

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

请参阅-h & -u & -p

之前和之后有适当的空格

答案 1 :(得分:0)

documentation,您需要使用-e / --execute:

  

- execute = statement,-e statement执行语句并退出。该   默认输出格式与使用--batch生成的格式类似。见章节   4.2.3.1,&#34;在命令行&#34;上使用选项,以获取一些示例。使用此选项,mysql不使用历史文件。

从控制台中尝试以下操作: mysql -h localhost -u USERNAME -p PASSWORD -e "DROP TABLE products" DATABASENAME

或修复脚本:

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);
}