基于php和mysql的简单的dao类实现crud操作功能


当然,我可以为你提供一个基于PHP和MySQL的简单DAO(Data Access Object)类实现CRUD(Create, Read, Update, Delete)操作的示例。请注意,这个示例假设你已经有了MySQL数据库连接的基础设置,比如通过PDO(PHP Data Objects)扩展。


<?php
class UserDao {
    private $pdo;

    // 构造函数,注入PDO实例
    public function __construct($pdo) {
        $this->pdo = $pdo;
    }

    // 创建用户
    public function createUser($username, $password) {
        $stmt = $this->pdo->prepare("INSERT INTO users (username, password) VALUES (?, ?)");
        $stmt->execute([$username, password_hash($password, PASSWORD_DEFAULT)]);
        return $stmt->rowCount() > 0;
    }

    // 读取用户
    public function readUser($id) {
        $stmt = $this->pdo->prepare("SELECT * FROM users WHERE id = ?");
        $stmt->execute([$id]);
        return $stmt->fetch(PDO::FETCH_ASSOC);
    }

    // 更新用户
    public function updateUser($id, $username, $password) {
        $stmt = $this->pdo->prepare("UPDATE users SET username = ?, password = ? WHERE id = ?");
        $stmt->execute([$username, password_hash($password, PASSWORD_DEFAULT), $id]);
        return $stmt->rowCount() > 0;
    }

    // 删除用户
    public function deleteUser($id) {
        $stmt = $this->pdo->prepare("DELETE FROM users WHERE id = ?");
        $stmt->execute([$id]);
        return $stmt->rowCount() > 0;
    }
}

// 示例使用PDO连接MySQL(需要根据你的环境进行调整)
$dsn = 'mysql:host=localhost;dbname=your_database;charset=utf8';
$user = 'your_username';
$password = 'your_password';
try {
    $pdo = new PDO($dsn, $user, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $userDao = new UserDao($pdo);
    // 示例:创建用户
    $created = $userDao->createUser('testuser', 'testpass');
    if ($created) {
        echo "User created successfully.\n";
    }

    // 其他CRUD操作可以类似地进行
} catch (PDOException $e) {
    die("Could not connect to the database $dsn :" . $e->getMessage());
}
?>

请注意,这个示例代码中的`$dsn`, `$user`, 和 `$password`需要根据你的MySQL数据库设置进行更改。同时,密码在存储之前使用了`password_hash()`函数进行加密处理,这是一个好习惯。

此代码片段展示了如何创建一个简单的`UserDao`类,该类封装了与`users`表相关的CRUD操作。每个方法都使用了PDO的预处理语句来防止SQL注入攻击,并返回操作是否成功的布尔值。