我正和一位客户合作,他给了我一些不相信他的理由(他没有那种情况)。我正在尝试创建一个“deadman's switch”,数据库中的所有表都将在提交表单时删除(在秘密登录保护目录中)。
我不知道怎么做是使用PHP从数据库中删除所有表。我知道如何删除列和行,并确保可以删除单个表(但是有很多表),但数据库中的所有表都超出了我的范围。
答案 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 <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_schema
或DROP DATABASE
的权限。
答案 4 :(得分:1)
您可以查询“SHOW TABLES;”然后循环遍历每个结果和“DROP TABLE TABLENAME;”
但正如某人已经说过的,如果其他人发现并使用它。那将是糟糕的一天。我不建议这样做。