首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 批量刪除資料表與清空資料庫的 PHP 實作

     編輯:MySQL 綜合教學

在開發或測試環境中,常需要快速清空資料庫所有資料表。本文提供一個簡單的 PHP 腳本,利用 SHOW TABLE STATUS 取得所有表名,再逐一執行 DROP TABLE 完成批量刪除。

完整程式碼

<?php
$hostname = 'localhost';
$userid   = 'admin';
$password = 'admin';
$dbname   = 'admin';

$connect = mysql_connect($hostname, $userid, $password);
mysql_select_db($dbname, $connect);

$result = mysql_query("SHOW TABLE STATUS FROM `$dbname`", $connect);
while ($data = mysql_fetch_array($result)) {
    $table = $data['Name'];
    mysql_query("DROP TABLE `$table`", $connect);
    echo "Dropped: $table\n";
}
?>

關鍵說明

  • 使用 SHOW TABLE STATUS 而非 SHOW TABLES,可同時取得表引擎、行數等資訊,便於後續擴充(如只刪除特定引擎的表)。
  • 表名以反引號 ` 包裹,防止保留字或特殊字元導致語法錯誤。
  • ⚠️ 極度危險操作:執行前務必確認資料庫名稱、備份重要資料,建議僅在測試環境使用。

現代化替代方案(推薦)

mysql_* 函數已棄用(PHP 7.0+ 移除),建議改用 PDO 或 mysqli:

<?php
$pdo = new PDO("mysql:host=localhost;dbname=admin", 'admin', 'admin');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$tables = $pdo->query("SHOW TABLE STATUS FROM `admin`")->fetchAll(PDO::FETCH_COLUMN, 0);
foreach ($tables as $table) {
    $pdo->exec("DROP TABLE `$table`");
    echo "Dropped: $table\n";
}
?>

更安全的「清空資料庫」替代方案

  1. 重建資料庫(最快、最乾淨):
    DROP DATABASE `admin`; CREATE DATABASE `admin` CHARACTER SET utf8mb4;
  2. 僅清空資料保留結構:
    查詢 information_schema.TABLES 產生 TRUNCATE TABLE 語句批次執行。

批量刪除表是雙面刃,用對場景能大幅提升效率,用錯環境則是災難。請謹慎評估後再執行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved