Deadman的开关:使用php从数据库中删除所有表?

时间:2012-12-07 15:36:20

标签: php mysql

我正和一位客户合作,他给了我一些不相信他的理由(他没有那种情况)。我正在尝试创建一个“deadman's switch”,数据库中的所有表都将在提交表单时删除(在秘密登录保护目录中)。

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

5 个答案:

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

答案 1 :(得分:2)

drop database

DROP DATABASE <DATABASE_NAME>

答案 2 :(得分:1)

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

答案 3 :(得分: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的权限。

答案 4 :(得分:1)

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

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