PHP如何从MySQL高效提取数据库数据?
- 虚拟主机
- 2025-12-17
- 6
PHP从MySQL提取数据是Web开发中的常见任务,通常通过MySQLi或PDO扩展实现,以下是详细步骤和代码示例,帮助开发者高效完成数据提取操作。
确保已安装MySQL数据库并创建测试表,假设有一个名为users的表,包含id、name和email字段,在PHP中建立数据库连接,使用MySQLi扩展时,代码如下:
$servername = "localhost"; $username = "root"; $password = ""; $dbname = "test_db"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn>connect_error) { die("连接失败: " . $conn>connect_error); }
若使用PDO,连接方式略有不同:

连接成功后,执行SQL查询语句以提取数据,查询users表的所有记录:
$sql = "SELECT id, name, email FROM users"; $result = $conn>query($sql);
对于MySQLi,处理结果集的方式如下:
if ($result>num_rows > 0) { while($row = $result>fetch_assoc()) { echo "ID: " . $row["id"]. " Name: " . $row["name"]. " Email: " . $row["email"]. "<br>"; } } else { echo "0 结果"; }
而PDO使用fetch()方法遍历结果:

为了更直观地展示数据,可以使用HTML表格输出,以下是完整的表格示例代码:
<table border="1"> <tr> <th>ID</th> <th>Name</th> <th>Email</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>"; } } ?> </table>
在实际应用中,需要注意安全性问题,防止SQL载入攻破,推荐使用预处理语句(Prepared Statements),PDO预处理语句的使用方法:
$stmt = $conn>prepare("SELECT id, name, email FROM users WHERE id = :id"); $stmt>bindParam(':id', $user_id); $stmt>execute(); $result = $stmt>fetchAll();
分页查询是处理大数据量的重要技术,以下是一个简单的分页实现:

$page = isset($_GET['page']) ? $_GET['page'] : 1; $per_page = 10; $offset = ($page 1) * $per_page; $sql = "SELECT id, name, email FROM users LIMIT $offset, $per_page"; $result = $conn>query($sql);
关闭数据库连接以释放资源:
$conn>close(); // MySQLi $conn = null; // PDO
相关问答FAQs:
-
问:如何处理MySQL查询中的中文乱码问题?
答:在建立连接后执行$conn>set_charset("utf8");(MySQLi)或在PDO连接字符串中添加charset=utf8,例如"mysql:host=$servername;dbname=$dbname;charset=utf8"。
-
问:为什么使用PDO比MySQLi更推荐?
答:PDO支持多种数据库(如MySQL、PostgreSQL、SQLite),而MySQLi仅限MySQL,PDO的预处理语句语法更统一,且默认启用模拟预处理,安全性更高。