首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 判斷 MySQL 資料表是否存在的三種實用方法

     編輯:PHP 相關知識

PHP 判斷 MySQL 資料表是否存在的三種實用方法

在 PHP 操作 MySQL 時,常需先確認目標資料表是否存在再執行後續邏輯。本文整理三種常見做法,並說明優缺點與適用場景。

方法一:查詢 SHOW TABLES 並陣列比對(推薦)

<?php
$link = mysqli_connect('localhost', 'root', 'password', 'dbname');
$tableName = 'target_table';

$result = mysqli_query($link, "SHOW TABLES LIKE '$tableName'");
if (mysqli_num_rows($result) > 0) {
    echo "資料表存在";
} else {
    echo "資料表不存在";
}
mysqli_close($link);
?>

優點:語法簡潔、效能佳、直接針對單一表名查詢。
缺點:需注意 SQL 注入,建議使用預處理語句。

方法二:使用 INFORMATION_SCHEMA.TABLES(標準化)

$sql = "SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES 
        WHERE TABLE_SCHEMA = 'dbname' AND TABLE_NAME = '$tableName'";
$count = mysqli_fetch_row(mysqli_query($link, $sql))[0];
echo $count ? "存在" : "不存在";

優點:符合 SQL 標準、可跨資料庫查詢、資訊豐富。
缺點:權限需求較高(需 SELECT 權限)。

方法三:嘗試 SELECT 1 FROM 表名(最直觀)

$result = @mysqli_query($link, "SELECT 1 FROM `$tableName` LIMIT 1");
if ($result) {
    echo "存在";
    mysqli_free_result($result);
} else {
    echo "不存在或權限不足";
}

優點:無需額外權限、邏輯直觀。
缺點:無法區分「不存在」與「無權限」;會觸發警告需用 @ 抑制。

最佳實踐建議

  • 現代 PHP 專案請改用 mysqli 或 PDO,mysql_* 函式已棄用並移除。
  • 搭配預處理語句防止注入:$stmt = $pdo->prepare("SHOW TABLES LIKE ?");
  • 若頻繁檢查,可快取表清單減少查詢開銷。

根據專案架構與權限情況選擇最適合的方法,能有效避免運行時錯誤。

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