Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menjana Jadual HTML Secara Dinamik daripada Pangkalan Data MySQL Menggunakan PHP?

Bagaimanakah Saya Boleh Menjana Jadual HTML Secara Dinamik daripada Pangkalan Data MySQL Menggunakan PHP?

Linda Hamilton
Lepaskan: 2024-11-22 02:19:16
asal
305 orang telah melayarinya

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

Mencipta Jadual HTML Secara Dinamik Menggunakan MySQL dan PHP

Walaupun terdapat siaran yang menerangkan cara membina jadual dalam HTML menggunakan PHP dan MySQL, perubahan kerap pada pengepala lajur MySQL selepas penciptaan meja boleh menjadi kerumitan. Artikel ini meneroka kaedah untuk mengemas kini kod PHP secara automatik, membolehkan anda menentukan nama jadual dan jadual dicetak tanpa memerlukan sisipan manual tag.

$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();
Salin selepas log masuk

Penyelesaian Dinamik

Untuk memudahkan proses, fungsi boleh dibuat untuk melaksanakan operasi ini secara dinamik. Ia menyemak kewujudan jadual, mengambil data dan menjana jadual HTML dengan pengepala.

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');
Salin selepas log masuk

Penyelesaian 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');
Salin selepas log masuk

Ini penyelesaian yang dioptimumkan mengesahkan kewujudan jadual menggunakan pertanyaan yang lebih cekap:

$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!');
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Jadual HTML Secara Dinamik daripada Pangkalan Data MySQL Menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan