PHP を使用して MySQL データベースから HTML テーブルを動的に生成するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-22 02:19:16
オリジナル
240 人が閲覧しました

How Can I Dynamically Generate HTML Tables from a MySQL Database Using PHP?

MySQL と PHP を使用した HTML テーブルの動的作成

PHP と MySQL を使用して HTML でテーブルを構築する方法を説明する投稿が利用可能であるにもかかわらず、MySQL の列ヘッダーは投稿後に頻繁に変更されます。テーブルの作成は面倒な場合があります。この記事では、PHP コードを自動的に更新する方法について説明します。これにより、 を手動で挿入しなくても、テーブル名を指定してテーブルを印刷できるようになります。

$table = "user";
$database = "database";
$conn = mysqli_connect("localhost", "username", "password", "database", "3306");

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM $table";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "<tr><td>" . $row["id"] . "</td><td>" . $row["first_name"] . "</td><td>" . $row["last_name"] . "</td><td>" . $row["birthday"] . "</td></tr>";
    }
    echo "</table>";
} else {
    echo "0 result";
}

$conn->close();
ログイン後にコピー

動的ソリューション

プロセスを簡素化するために、これらの操作を動的に実行する関数を作成できます。テーブルの存在を確認し、データをフェッチし、ヘッダー付きの HTML テーブルを生成します。

MySQLi Solution

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = mysqli_connect("localhost", "username", "password", "database", "3306");
$mysqli->set_charset('utf8mb4'); // always set the charset

function outputMySQLToHTMLTable(mysqli $mysqli, string $table)
{
    // Verify table existence
    $tableNames = array_column($mysqli->query('SHOW TABLES')->fetch_all(), 0);
    if (!in_array($table, $tableNames, true)) {
        throw new UnexpectedValueException('Unknown table name provided!');
    }

    $res = $mysqli->query('SELECT * FROM ' . $table);
    $data = $res->fetch_all(MYSQLI_ASSOC);

    echo '<table">';
    // Table header
    echo '<thead>';
    echo '<tr>';
    foreach ($res->fetch_fields() as $column) {
        echo '<th' . htmlspecialchars($column->name) . '</th>';
    }
    echo '</tr>';
    echo '</thead>';

    // Table body
    if ($data) {
        foreach ($data as $row) {
            echo '<tr>';
            foreach ($row as $cell) {
                echo '<td' . htmlspecialchars($cell) . '</td>';
            }
            echo '</tr>';
        }
    } else {
        echo '<tr><td colspan="' . $res->field_count . '">No records in the table!</td></tr>';
    }
    echo '</table>';
}

outputMySQLToHTMLTable($mysqli, 'user');
ログイン後にコピー

PDOソリューション

$pdo = new PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'username', 'password', [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES => false
]);

function outputMySQLToHTMLTable(pdo $pdo, string $table)
{
    // Verify table existence
    $tableNames = $pdo->query('SHOW TABLES')->fetchAll(PDO::FETCH_COLUMN);
    if (!in_array($table, $tableNames, true)) {
        throw new UnexpectedValueException('Unknown table name provided!');
    }

    $stmt = $pdo->query('SELECT * FROM ' . $table);
    $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $columnCount = $stmt->columnCount();

    echo '<table">';
    // Table header
    echo '<thead>';
    echo '<tr>';
    for ($i = 0; $i < $columnCount; $i++) {
        echo '<th' . htmlspecialchars($stmt->getColumnMeta($i)['name']) . '</th>';
    }
    echo '</tr>';
    echo '</thead>';

    // Table body
    if ($data) {
        foreach ($data as $row) {
            echo '<tr>';
            foreach ($row as $cell) {
                echo '<td' . htmlspecialchars($cell) . '</td>';
            }
            echo '</tr>';
        }
    } else {
        echo '<tr><td colspan="' . $columnCount . '">No records in the table!</td></tr>';
    }
    echo '</table>';
}

outputMySQLToHTMLTable($pdo, 'user');
ログイン後にコピー

この最適化されたソリューションは、より効率的なクエリを使用してテーブルの存在を検証します:

$tableNames = $pdo->prepare('SELECT COUNT(1) FROM information_schema.TABLES WHERE TABLE_SCHEMA = SCHEMA() AND TABLE_NAME=?');
$tableNames->execute([$table]);
if (!$tableNames->fetchColumn()) {
    throw new UnexpectedValueException('Unknown table name provided!');
}
ログイン後にコピー

以上がPHP を使用して MySQL データベースから HTML テーブルを動的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート