PHP 数据库连接教程

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. 数据库连接最佳实践
  1. 使用配置文件:将数据库凭据(用户名、密码等)存储在单独的配置文件中,并确保该文件不被上传到版本控制系统或公开访问。
  2. // 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']
    );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值