4

我正在与一位客户合作,他给了我一些不信任他的理由(他没有遇到过这种情况)。我正在尝试创建一个“死人开关”,其中数据库中的所有表都将在提交表单时被删除(在秘密登录保护目录中)。

我不知道如何使用 PHP 从数据库中删除所有表。我知道如何删除列和行,并且确信可以删除单个表(但是有很多表),但是数据库中的所有表都超出了我的范围。

4

5 回答 5

5

为什么不删除整个数据库?

DROP DATABASE database_name

示例代码

<?php
if(isset($_POST['delete_database'])) {
  //Code goes here
}
?>

<form method="post">
 <input type="submit" name="delete_database" value="Delete Entire Database" />
</form>
于 2012-12-07T15:39:09.933 回答
2

删除数据库

DROP DATABASE <DATABASE_NAME>
于 2012-12-07T15:39:50.763 回答
1

首先,您可以从中读取information_schema,它存储所有表名。
其次,您可以使用mysql_list_tables(已弃用)来获取数据库的所有表。第三,您可以删除整个数据库,而不是删除每个表。

于 2012-12-07T15:40:27.433 回答
1

一种选择是使用DROP DATABASE

DROP DATABASE db_name;

http://dev.mysql.com/doc/refman/5.0/en/drop-database.html

这只会破坏数据库。另一种选择是使用该表选择数据库中的所有information_schema表:

SELECT table_name FROM INFORMATION_SCHEMA.TABLES
  WHERE table_schema = 'db_name'

http://dev.mysql.com/doc/refman/5.1/en/tables-table.html

在您完全相信这个想法之前,您应该在生产站点上检查您的用户的权限。一些托管公司可能不会让您访问information_schemaDROP DATABASE.

于 2012-12-07T15:46:51.773 回答
1

您可以查询“SHOW TABLES;” 然后遍历每个结果和“DROP TABLE TABLENAME;”

但正如有人已经说过的那样,如果其他人发现并使用它。那将是糟糕的一天。我不建议这样做。

于 2012-12-07T15:47:00.837 回答