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

PHP + MySQL 統計資料庫各表記錄數並按筆數遞減排序

     編輯:PHP 綜合知識

功能說明

連接資料庫,查詢所有資料表,統計各表記錄筆數,並依筆數由大到小排序輸出。

完整實作代碼

<?php
$host     = '127.0.0.1';
$port     = 3306;
$dbname   = 'test';
$username = 'root';
$password = '';

// 通用輸出函數(支援 CLI 與 Web)
function ee($p) {
    if (PHP_SAPI == 'cli') { echo "\n"; }
    else { echo "<pre>"; }
    print_r($p);
    if (PHP_SAPI == 'cli') { echo "\n"; }
    else { echo "</pre>"; }
}

// PDO 連線設定
$dsn = "mysql:host={$host};port={$port};dbname={$dbname}";
$opts = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_AUTOCOMMIT => 0,
);

try {
    $pdo = new PDO($dsn, $username, $password, $opts);
} catch (PDOException $e) {
    echo $e->getMessage();
    exit;
}

// 有結果集查詢
function query($sql) {
    global $pdo;
    $stmt = $pdo->query($sql);
    return $stmt->fetchAll(PDO::FETCH_BOTH);
}

// 無結果集執行
function execute($sql) {
    global $pdo;
    return $pdo->query($sql);
}

// 1. 取得所有資料表
$tables = query("SHOW TABLES");

$sort_data  = array();
$sort_index = array();

// 2. 統計各表記錄數
foreach ($tables as $table) {
    $table_name = $table[0];
    $count_sql  = "SELECT COUNT(*) AS num FROM `{$table_name}`";
    $stmt       = $pdo->query($count_sql);
    $info       = $stmt->fetch(PDO::FETCH_BOTH);

    // 為了輸出對齊,補空白至 25 字元
    $pad_table = str_pad($table_name, 25, ' ');

    $sort_data[]  = array('table' => $pad_table, 'num' => $info['num']);
    $sort_index[] = $info['num'];
}

// 3. 多維陣列排序:依 num 遞減
array_multisort($sort_index, SORT_DESC, $sort_data);

// 4. 輸出結果
foreach ($sort_data as $val) {
    $row_str = <<<EOF
{$val['table']} [{$val['num']}]
EOF;
    ee($row_str);
}

代碼關鍵點解析

  1. PDO 連線:使用預處理機制,安全防注入
  2. SHOW TABLES:取得資料庫所有表名
  3. COUNT(*):高效統計記錄數(MyISAM 為 O(1),InnoDB 需掃描)
  4. str_pad:輸出對齊美化
  5. array_multisort:多維陣列按指定鍵值排序
  6. Heredoc 語法:<<<EOF ... EOF 方便多行字串輸出
  7. PHP_SAPI 判斷:區分 CLI/Web 環境調整輸出格式

執行結果範例

users                     [1500]
orders                    [892]
products                  [456]
logs                      [234]
categories                [12]

延伸應用

  • 加入資料表大小統計:SHOW TABLE STATUS
  • 支援多資料庫切換
  • 輸出為 CSV/JSON/HTML 表格
  • 整合至管理後台定時任務

相關專題推薦

  • 《PHP + MySQL 資料庫操作入門教程》
  • 《PHP 常見資料庫操作技巧匯總》
  • 《PHP 基於 PDO 操作資料庫技巧總結》
  • 《PHP 基本語法入門教程》
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved