在Web开发中,PHP与MySQL的组合是最常见的技术栈之一,许多动态网站的数据存储与展示都依赖于这两者的配合,本文将详细介绍如何使用PHP显示MySQL表中的数据,涵盖从数据库连接到数据展示的完整流程,并确保代码清晰易懂。

数据库连接与查询
要显示MySQL表中的数据,必须建立PHP与MySQL数据库的连接,可以使用MySQLi或PDO扩展来实现这一功能,以下是使用MySQLi的示例代码:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 查询数据
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);
?>上述代码中,我们首先定义了数据库的连接参数,然后使用mysqli类建立连接,如果连接失败,程序会输出错误信息并终止,我们编写SQL查询语句,从users表中选择id、name和email字段,并通过query()方法执行查询。
数据展示与循环输出
查询成功后,需要将结果以表格形式展示在网页上,可以使用while循环遍历查询结果,并动态生成HTML表格,以下是实现代码:

<table border="1">
<tr>
<th>ID</th>
<th>姓名</th>
<th>邮箱</th>
</tr>
<?php
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $row["id"] . "</td>";
echo "<td>" . $row["name"] . "</td>";
echo "<td>" . $row["email"] . "</td>";
echo "</tr>";
}
} else {
echo "0 结果";
}
?>
</table>这段代码首先创建了一个HTML表格,并定义了表头,通过fetch_assoc()方法逐行获取查询结果,并将数据填充到表格的行中,如果查询结果为空,则显示“0 结果”。
错误处理与优化
在实际开发中,错误处理和代码优化至关重要,可以使用try-catch块捕获PDO异常,或对输出数据进行转义以防止XSS攻击,以下是使用PDO的示例:
try {
$pdo = new PDO("mysql:host=localhost;dbname=test_db", "root", "");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->query("SELECT id, name, email FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<tr>";
echo "<td>" . htmlspecialchars($row["id"]) . "</td>";
echo "<td>" . htmlspecialchars($row["name"]) . "</td>";
echo "<td>" . htmlspecialchars($row["email"]) . "</td>";
echo "</tr>";
}
} catch (PDOException $e) {
echo "错误: " . $e->getMessage();
}PDO提供了更强大的错误处理机制,htmlspecialchars()函数则能有效防止恶意脚本注入。

相关问答FAQs
Q1: 如何分页显示MySQL表数据?
A1: 可以通过SQL的LIMIT和OFFSET子句实现分页,每页显示10条数据,第2页的查询语句为SELECT * FROM users LIMIT 10 OFFSET 10,需要计算总页数并生成分页链接。
Q2: 如何优化大数据量时的查询性能?
A2: 可以通过以下方式优化:1)为查询字段添加索引;2)使用SELECT时只查询需要的字段,避免SELECT *;3)对大数据量使用分页查询;4)考虑使用缓存技术如Redis。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/173265.html
