我正在尝试从我的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
我也尝试将表名放在引号中,但同样的事情 - 没有运气。
有谁能告诉我我在这里缺少什么?
答案 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);
}