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