PDO操作 #

一、连接数据库 #

php
<?php
$dsn = 'mysql:host=localhost;dbname=mydb;charset=utf8mb4';
$pdo = new PDO($dsn, 'root', 'password', [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]);

二、执行查询 #

2.1 query() #

php
<?php
$stmt = $pdo->query('SELECT * FROM users');
$users = $stmt->fetchAll();

2.2 exec() #

php
<?php
$count = $pdo->exec("DELETE FROM users WHERE active = 0");

三、预处理语句 #

php
<?php
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$stmt->execute([1]);
$user = $stmt->fetch();

$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');
$stmt->execute(['email' => 'john@example.com']);
$user = $stmt->fetch();

四、插入数据 #

php
<?php
$stmt = $pdo->prepare('INSERT INTO users (name, email) VALUES (?, ?)');
$stmt->execute(['John', 'john@example.com']);
echo $pdo->lastInsertId();

五、事务 #

php
<?php
try {
    $pdo->beginTransaction();
    
    $pdo->exec("INSERT INTO orders (user_id) VALUES (1)");
    $pdo->exec("INSERT INTO order_items (order_id, product_id) VALUES (LAST_INSERT_ID(), 1)");
    
    $pdo->commit();
} catch (Exception $e) {
    $pdo->rollBack();
}

六、总结 #

本章学习了PDO操作,下一章将学习预处理语句。

最后更新:2026-03-26