PDO的基本使用方法
PHP PDO(PHP Data Objects)是一个数据库访问层,提供了一个数据访问抽象层,允许你使用各种数据库,而无需编写特定于数据库的代码。以下是PDO的详细用法概述:
1. 连接到数据库
首先,你需要使用PDO的构造函数来创建一个数据库连接。
php
<?php
try {
$pdo = new PDO(mysql:host=localhost;dbname=testdb, username, password);
// 设置 PDO 错误模式为异常
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
2. 准备和执行SQL语句
使用prepare()方法准备SQL语句,并使用execute()方法执行它。对于带有参数的SQL语句,你可以使用占位符(通常是:name)并在执行时使用bindParam()或bindvalue()方法绑定值。
php
<?php
// ... 假设你已经有了$pdo连接 ...
try {
$stmt = $pdo->prepare("INSERT INTO users (name, email) valueS (:name, :email)");
$stmt->bindParam(:name, $name);
$stmt->bindParam(:email, $email);
// 插入一行
$name = "John Doe";
$email = "john@example.com";
$stmt->execute();
// 插入另一行
$name = "Jane Doe";
$email = "jane@example.com";
$stmt->execute();
echo "New records created successfully";
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
?>
3. 获取查询结果
对于SELECT查询,你可以使用fetchAll()或fetch()方法来获取结果。
php
<?php
// ... 假设你已经有了$pdo连接 ...
try {
$stmt = $pdo->query("SELECT * FROM users");
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "Name: " . $row[name]. "<br>";
echo "Email: " . $row[mail]. "<br><br>";
}
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
?>
4. 处理事务
PDO也支持事务处理。你可以使用beginTransaction()开始一个事务,使用commit()提交事务,或使用rollBack()回滚事务。
php
<?php
// ... 假设你已经有了$pdo连接 ...
try {
$pdo->beginTransaction();
// 第一个SQL语句
$stmt = $pdo->prepare("INSERT INTO users (name, email) valueS (:name, :email)");
$stmt->bindParam(:name, $name);
$stmt->bindParam(:email, $email);
$name = "John Doe";
$email = "john@example.com";
$stmt->execute();
// 假设这里有一个错误导致你不想继续
// throw new PDOException(An error occurred);
// 第二个SQL语句
// ...
// 如果没有错误,提交事务
$pdo->commit();
echo "New records created successfully";
} catch(PDOException $e) {
// 如果发生错误,回滚事务
$pdo->rollBack();
echo "Error: " . $e->getMessage();
}
?>
5. 关闭连接
虽然PHP在脚本结束时会自动关闭数据库连接,但你也可以显式地关闭它,使用null来销毁PDO对象。
php
$pdo = null; // 关闭连接
注意:在实际应用中,请确保不要硬编码数据库凭据(如用户名和密码)。相反,使用环境变量、配置文件或其他安全方法来存储这些信息。