批改状态:合格
老师批语:
            
        PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。
PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。
单例模式,说白了就是说一个类只能实例化一次。
目的就是为了防止产生多个实例化对象
第一次产生后放到类的一个静态变量中,下次再实例化就直接返回这个静态变量
<?php//定义接口interface cdbBase{// 数据表增删查改static function insert($db, $data);static function select($db, $where = []);static function update($db, $where = []);static function delete($db, $data, $where = []);//数据库连接static function doconnect($dsn, $user, $password);}// 单例模式连接数据库abstract class adb implements cdbBase{//定义静态属性存储pdo唯一实例private static $_instance;//阻止外部实例化private function __construct(){}private function __clone(){}// 创建adb类的唯一实例 获取唯一的pdo对象static function doconnect($dsn, $user, $password){if (is_null(self::$_instance)) {self::$_instance = new pdo($dsn, $user, $password);}echo "连接成功<hr>";return self::$_instance;}}//工作类,具体实现class DB extends adb{// 数据库连接curdstatic function insert($db, $data = []){$sql = "INSERT INTO `test` VALUES ('13','123456')";$doinsert = $db->exec($sql);if($doinsert){echo "添加成功<br>";}else{echo "添加失败<br>";}return $doinsert;}static function select($db, $where = []){$doselect = $db->query('SELECT * FROM `test` LIMIT 7;')->fetchAll(PDO::FETCH_ASSOC);if($doselect){echo "选择数据成功:<br>";}else{echo "选择数据失败:<br>";}return $doselect;}static function update($db, $where = []){$doupdate = $db->exec("UPDATE `test` SET `name` = '大萨dsa达撒' WHERE `test`.`id` = 1");if($doupdate){echo "更新成功<br>";}else{echo "更新失败<br>";}return $doupdate;}static function delete($db, $data = [], $where = []){$doupdate = $db->exec("DELETE FROM `test` WHERE `test`.`id` = 1");if($doupdate){echo "删除成功<br>";}else{echo "删除失败<br>";}return $doupdate;}}//客户端代码,参数$config = ['type' => $type ?? 'mysql','host' => $host ?? 'localhost','dbname' => $dbname ?? 'userinfo','username' => $username ?? 'root','password' => $password ?? '','port' => $port ?? '3306','charset' => $charset ?? 'utf8'];extract($config);$dsn = sprintf('%s:host=%s;port=%s;charset=%s;dbname=%s', $type, $host, $port, $charset, $dbname);$pdo = DB::doconnect($dsn, $username, $password);var_dump(DB::select($pdo));echo "<hr>";var_dump(DB::insert($pdo));echo "<hr>";var_dump(DB::delete($pdo));echo "<hr>";var_dump(DB::update($pdo));
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号