PHP 是一种广泛用于服务器端编程的脚本语言,与数据库的连接是 Web 开发中的基础操作。以下是关于如何使用 PHP 连接各种数据库的详细教程。
1. PHP 连接 MySQL 数据库
MySQL 是最流行的开源数据库系统,PHP 提供了两种主要方式连接 MySQL:MySQLi 和 PDO。
方法一:使用 MySQLi(MySQL Improved Extension)
MySQLi 是 MySQL 的改进扩展,支持面向对象和过程化两种编程风格。
<?php
// 数据库连接参数
$servername = "localhost"; // 数据库服务器地址
$username = "your_username"; // 数据库用户名
$password = "your_password"; // 数据库密码
$dbname = "your_database"; // 数据库名
// 创建连接(面向对象方式)
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "MySQL 连接成功";
// 执行 SQL 查询
$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"] . " - 姓名: " . $row["name"] . " - 邮箱: " . $row["email"] . "<br>";
}
} else {
echo "0 结果";
}
// 关闭连接
$conn->close();
?>
步骤 2:使用预处理语句(防止 SQL 注入)
// 预处理语句示例
$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);
// 设置参数并执行
$name = "John Doe";
$email = "john@example.com";
$stmt->execute();
echo "新记录插入成功";
$stmt->close();
方法二:使用 PDO(PHP Data Objects)
PDO 是一种更灵活的数据库抽象层,支持多种数据库系统。
步骤 1:创建 PDO 连接
<?php
try {
// 数据库连接参数(以 MySQL 为例)
$dsn = "mysql:host=localhost;dbname=your_database;charset=utf8mb4";
$username = "your_username";
$password = "your_password";
// 创建 PDO 实例
$pdo = new PDO($dsn, $username, $password);
// 设置错误模式为异常
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "PDO 连接成功";
} catch(PDOException $e) {
die("连接失败: " . $e->getMessage());
}
// 执行查询
$sql = "SELECT * FROM users";
foreach ($pdo->query($sql) as $row) {
echo $row['name'] . "<br>";
}
// 预处理语句示例
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
// 插入第一条记录
$name = "Jane Smith";
$email = "jane@example.com";
$stmt->execute();
// 插入第二条记录
$name = "Bob Johnson";
$email = "bob@example.com";
$stmt->execute();
?>
2. PHP 连接 PostgreSQL 数据库
PostgreSQL 是一种功能强大的开源关系型数据库。
<?php
try {
// 数据库连接参数
$host = "localhost";
$dbname = "your_database";
$user = "your_username";
$password = "your_password";
$port = "5432";
// 创建 PDO 连接
$pdo = new PDO("pgsql:host=$host;port=$port;dbname=$dbname;user=$user;password=$password");
// 设置错误模式
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "PostgreSQL 连接成功";
} catch(PDOException $e) {
die("连接失败: " . $e->getMessage());
}
// 查询示例
$sql = "SELECT * FROM users";
$stmt = $pdo->query($sql);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['name'] . "<br>";
}
?>
3. PHP 连接 SQLite 数据库
SQLite 是一种轻量级文件型数据库,适合小型应用。
<?php
try {
// 创建 PDO 连接(如果数据库文件不存在,会自动创建)
$pdo = new PDO('sqlite:path/to/your/database.db');
// 设置错误模式
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "SQLite 连接成功";
// 创建表(如果不存在)
$pdo->exec("CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT,
email TEXT
)");
// 插入数据
$pdo->exec("INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')");
// 查询数据
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['name'] . "<br>";
}
} catch(PDOException $e) {
die("连接失败: " . $e->getMessage());
}
?>
4. 数据库连接最佳实践
- 使用配置文件:将数据库凭据(用户名、密码等)存储在单独的配置文件中,并确保该文件不被上传到版本控制系统或公开访问。
-
// config.php <?php return [ 'db_host' => 'localhost', 'db_name' => 'your_database', 'db_user' => 'your_username', 'db_pass' => 'your_password' ]; ?> // 使用配置文件 $config = require 'config.php'; $conn = new mysqli( $config['db_host'], $config['db_user'], $config['db_pass'], $config['db_name'] );