悠悠楠杉
网站页面
正文:
在PHP开发中,数据库操作是必不可少的一部分,而MySQL作为最流行的关系型数据库之一,与PHP的搭配尤为常见。传统上,开发者使用mysql_或mysqli_扩展进行连接,但随着PHP版本的更新,PDO(PHP Data Objects)因其安全性、跨数据库兼容性成为更推荐的方式。本文将手把手教你如何使用PDO连接MySQL,并完成基本操作。
try-catch机制,便于调试错误。使用PDO连接MySQL需要构造DSN字符串,包含数据库类型、主机名、数据库名等信息。
// 配置数据库信息
$host = 'localhost';
$dbname = 'test_db';
$username = 'root';
$password = '123456';
try {
// 创建PDO实例
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
// 设置错误模式为异常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "数据库连接成功!";
} catch (PDOException $e) {
die("连接失败: " . $e->getMessage());
}
mysql:host=$host;dbname=$dbname:DSN格式,指定数据库类型和名称。setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION):开启异常捕获,避免静默失败。
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "ID: " . $row['id'] . ", 姓名: " . $row['name'];
}
推荐使用预处理语句防止SQL注入:
$sql = "INSERT INTO users (name, email) VALUES (?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute(['张三', 'zhangsan@example.com']);
echo "插入成功,ID: " . $pdo->lastInsertId();
更新数据:
$stmt = $pdo->prepare("UPDATE users SET name = ? WHERE id = ?");
$stmt->execute(['李四', 1]);
删除数据:
$stmt = $pdo->prepare("DELETE FROM users WHERE id = ?");
$stmt->execute([1]);
确保一组操作要么全部成功,要么全部回滚:
try {
$pdo->beginTransaction();
$pdo->exec("UPDATE account SET balance = balance - 100 WHERE user_id = 1");
$pdo->exec("UPDATE account SET balance = balance + 100 WHERE user_id = 2");
$pdo->commit();
} catch (Exception $e) {
$pdo->rollBack();
echo "事务失败: " . $e->getMessage();
}
PDO::FETCH_ASSOC:返回关联数组。PDO::FETCH_OBJ:返回对象形式。charset=utf8:
new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);