Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menjana Jadual HTML Secara Dinamik daripada Pangkalan Data MySQL Menggunakan 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
$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();
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_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 = 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');
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!'); }
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!