PHP与SQL数据库的交互是Web开发中的核心环节,掌握如何高效、安全地显示数据库内容是开发者的必备技能,本文将详细介绍使用PHP连接SQL数据库并显示数据的完整流程,涵盖环境准备、连接方式、数据查询及安全处理等关键内容。

环境准备与基础配置
在开始之前,需确保本地或服务器环境已安装PHP和对应的数据库管理系统(如MySQL、MariaDB等),PHP提供了多种数据库扩展,如MySQLi和PDO,推荐使用PDO(PHP Data Objects),因其支持多种数据库类型且具备更好的安全性和灵活性,通过phpinfo()函数可检查PHP版本及已安装的扩展,确保PDO_MySQL模块已启用。
建立数据库连接
使用PDO连接SQL数据库需指定数据库类型、主机名、端口、数据库名、用户名及密码,以下为基本连接代码示例:
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8mb4';
$username = 'root';
$password = '';
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die('连接失败: ' . $e->getMessage());
}
代码中,$dsn字符串定义了数据库连接参数,setAttribute()方法启用异常模式,便于捕获并处理连接错误。
执行SQL查询并获取数据
连接成功后,可通过query()或prepare()+execute()方法执行SQL查询,前者适用于简单查询,后者更适合处理动态参数,可防止SQL注入,以下为查询示例:
$sql = "SELECT id, name, email FROM users"; $stmt = $pdo->query($sql); $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
fetchAll()方法以关联数组形式返回所有结果,PDO::FETCH_ASSOC确保键名为列名,若只需单条记录,可用fetch()替代。

显示数据的HTML渲染
获取数据后,需结合HTML进行格式化输出,以下为常见渲染方式:
echo '<table border="1">';
echo '<tr><th>ID</th><th>姓名</th><th>邮箱</th></tr>';
foreach ($results as $row) {
echo '<tr>';
echo '<td>' . htmlspecialchars($row['id']) . '</td>';
echo '<td>' . htmlspecialchars($row['name']) . '</td>';
echo '<td>' . htmlspecialchars($row['email']) . '</td>';
echo '</tr>';
}
echo '</table>';
htmlspecialchars()函数可将特殊字符转换为HTML实体,避免XSS攻击风险。
分页与高级功能
当数据量较大时,需实现分页功能,可通过LIMIT和OFFSET子句控制每页显示数量:
$page = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1; $perPage = 10; $offset = ($page 1) * $perPage; $sql = "SELECT id, name, email FROM users LIMIT $perPage OFFSET $offset";
需生成分页导航链接,便于用户切换页面。
错误处理与安全优化
数据库操作中,错误处理至关重要,PDO的异常模式可捕获语法错误或连接问题,但需避免向用户暴露敏感信息,所有用户输入必须经过验证和过滤,例如使用filter_input()函数获取GET或POST参数,或通过预处理语句绑定参数:

$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->bindParam(':id', $userId, PDO::PARAM_INT);
$stmt->execute();
PHP显示SQL数据库内容涉及连接、查询、渲染及安全等多个步骤,开发者需优先选择PDO扩展,结合预处理语句和错误处理机制,确保数据交互的安全性与高效性,通过合理运用HTML渲染和分页技术,可显著提升用户体验。
FAQs
Q1: 如何解决PHP连接数据库时的“Access denied”错误?
A1: 该错误通常由用户名或密码错误、数据库权限不足或主机地址配置不当导致,请检查:
- 确认数据库用户名和密码是否正确;
- 验证用户是否对目标数据库具有SELECT权限;
- 确认
$dsn中的host值是否与数据库服务实际监听地址一致(如localhost或0.0.1)。
Q2: 为什么使用PDO的预处理语句能防止SQL注入?
A2: 预处理语句通过将SQL逻辑与数据分离实现安全防护。$stmt->bindParam(':id', $input)会将$input作为数据处理而非SQL代码的一部分,即使输入包含恶意代码(如' OR 1=1 --),也会被转义为普通字符串,无法破坏原有SQL结构。
标签: php读取数据库数据 php输出sql查询结果 php显示mysql数据内容