我正在与一位客户合作,他给了我一些不信任他的理由(他没有遇到过这种情况)。我正在尝试创建一个“死人开关”,其中数据库中的所有表都将在提交表单时被删除(在秘密登录保护目录中)。
我不知道如何使用 PHP 从数据库中删除所有表。我知道如何删除列和行,并且确信可以删除单个表(但是有很多表),但是数据库中的所有表都超出了我的范围。
为什么不删除整个数据库?
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>
DROP DATABASE <DATABASE_NAME>
首先,您可以从中读取information_schema
,它存储所有表名。
其次,您可以使用mysql_list_tables
(已弃用)来获取数据库的所有表。第三,您可以删除整个数据库,而不是删除每个表。
一种选择是使用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
.
您可以查询“SHOW TABLES;” 然后遍历每个结果和“DROP TABLE TABLENAME;”
但正如有人已经说过的那样,如果其他人发现并使用它。那将是糟糕的一天。我不建议这样做。