在PHP中查看数据库是Web开发中的常见需求,通常通过扩展如MySQLi或PDO来实现,本文将详细介绍如何使用这些方法连接数据库、执行查询并获取结果,同时涵盖错误处理和最佳实践,帮助开发者高效、安全地操作数据库。

使用MySQLi扩展查看数据库
MySQLi(MySQL Improved)是PHP中专门用于操作MySQL数据库的扩展,支持面向过程和面向对象两种编程方式,确保PHP环境中已启用MySQLi扩展,可以通过phpinfo()函数检查,以下是面向对象方式的连接示例:
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "test_db";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
连接成功后,可以使用query()方法执行SQL查询,查询users表中的所有数据:
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 输出数据
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
}
} else {
echo "0 结果";
}
$conn->close();
使用PDO扩展查看数据库
PDO(PHP Data Objects)是一种更通用的数据库访问抽象层,支持多种数据库,如MySQL、PostgreSQL等,PDO的优势在于其可移植性和预处理语句功能,能有效防止SQL注入,以下是使用PDO连接和查询的示例:

$host = "localhost";
$dbname = "test_db";
$username = "root";
$password = "password";
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
// 设置PDO错误模式为异常
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "连接成功";
} catch(PDOException $e) {
echo "连接失败: " . $e->getMessage();
}
// 执行查询
$sql = "SELECT id, name, email FROM users";
$stmt = $pdo->query($sql);
// 获取结果
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "ID: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
}
$pdo = null; // 关闭连接
处理查询结果和错误
无论使用MySQLi还是PDO,正确处理查询结果和错误都是至关重要的,MySQLi中,fetch_assoc()方法将结果集关联到数组,而PDO支持多种获取模式,如FETCH_ASSOC、FETCH_NUM等,错误处理方面,PDO通过异常捕获机制提供更清晰的错误信息,而MySQLi则需要手动检查connect_error或query()返回值。
安全注意事项
在查看数据库时,安全性是不可忽视的一环,避免直接拼接SQL语句,应使用预处理语句(Prepared Statements)来防止SQL注入攻击,PDO的预处理语句示例:
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->bindParam(':id', $id);
$stmt->execute();
$result = $stmt->fetchAll();
性能优化建议
频繁查询数据库可能影响性能,建议合理使用索引、缓存查询结果,并避免不必要的数据库连接,对于大型数据集,可使用分页查询减少单次数据量。

相关问答FAQs
Q1: 如何在PHP中查看数据库表的字段信息?
A1: 可以使用SQL的DESCRIBE语句或SHOW COLUMNS FROM table_name查询表结构,在MySQLi中执行$result = $conn->query("DESCRIBE users");,然后遍历结果获取字段信息。
Q2: 为什么使用PDO比MySQLi更推荐?
A2: PDO支持多种数据库,具有更好的可移植性,且内置预处理语句功能,安全性更高,而MySQLi仅针对MySQL,虽然功能强大,但在跨数据库场景下灵活性较差。