📜  pdo db 连接 - PHP (1)

📅  最后修改于: 2023-12-03 15:18:17.383000             🧑  作者: Mango

PDO数据库连接 - PHP

PHP Data Object(PDO)是PHP提供的一个轻量级、一致性的数据访问层。使用PDO可以方便地连接各种数据库,包括MySQL、PostgreSQL、Oracle等等。

连接数据库

使用PDO连接数据库需要以下几个步骤:

  1. 创建一个PDO对象,指定数据库类型、主机名、数据库名、用户名和密码。

    $dsn = 'mysql:host=localhost;dbname=test';
    $username = 'root';
    $password = 'password';
    
    try {
        $dbh = new PDO($dsn, $username, $password);
    } catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
    }
    
  2. 准备SQL语句,并绑定参数(如果有)。

    $stmt = $dbh->prepare('SELECT * FROM users WHERE id = :id');
    $stmt->bindParam(':id', $id, PDO::PARAM_INT);
    
  3. 执行SQL语句并获取结果。

    $id = 1;
    $stmt->execute();
    $result = $stmt->fetch(PDO::FETCH_ASSOC);
    
  4. 使用结果进行业务逻辑处理。

    if ($result) {
        echo $result['name'];
    } else {
        echo 'User not found.';
    }
    
预处理语句

预处理语句是一种特殊类型的SQL语句,它允许参数在执行之前先由PDO引擎转换为占位符。使用预处理语句可以提高查询的性能,并避免SQL注入攻击。

下面是一个带有预处理语句的例子:

$name = 'John Doe';
$email = 'john.doe@example.com';

$stmt = $dbh->prepare('INSERT INTO users (name, email) VALUES (:name, :email)');
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->bindValue(':email', $email, PDO::PARAM_STR);

if ($stmt->execute()) {
    echo 'User created successfully.';
} else {
    echo 'User creation failed.';
}
事务处理

事务是数据库操作的一种机制,在一个事务中的所有操作都必须成功才能生效,否则就会被回滚。PDO提供了一种方便的方式来进行事务处理。

try {
    $dbh->beginTransaction();
   
    $dbh->exec("UPDATE users SET email='johndoe@example.com' WHERE id=1");
    $dbh->exec("UPDATE users SET email='janedoe@example.com' WHERE id=2");
   
    $dbh->commit();
    echo "Transaction succeeded.";
} catch (Exception $e) {
    $dbh->rollBack();
    echo "Transaction failed: " . $e->getMessage();
}

在上面的例子中,如果中间任何一条SQL语句执行失败,整个事务都会被回滚。

总结

使用PDO可以方便地连接各种类型的数据库,并使用其提供的预处理语句和事务处理功能来提高查询的性能和安全性。建议在实际项目中使用PDO进行数据库操作。