批改状态:合格
老师批语:完成的不错,继续加油
=============================================
PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。
PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。
PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用,无法运行于之前的PHP版本。


# connect.php文件// 数据库连接参数$db = ['type' => 'mysql','host' => 'localhost','dbname' => 'php','username' => 'root','password' => 'root',];// 配置数据源DSN信息$dsn = "{$db['type']}:host={$db['host']};dbname={$db['dbname']}";// 连接数据库try {$pdo = new PDO($dsn, $db['username'], $db['password']);} catch (PDOException $e) {die('Connection Failed: ' . $e->getMessage());}
PDOStatement: 预处理对象(SQL语句对象)
prepare(): 预处理方法, 用来生成预处理对象PDOStatement
// 1. 连接数据库require __DIR__ . '/connect.php';// 2. 创建SQL语句模板$sql = 'INSERT INTO `system` SET `sys_id`= :sys_id, `title`=:title, `desc`=:desc, `key`=:key, `copy`=:copy';// 3. 创建SQL语句对象$stmt = $pdo->prepare($sql);
// 1. 连接数据库require __DIR__ . '/connect.php';// 2. 创建SQL语句模板$sql = 'INSERT INTO `system` SET `sys_id`= :sys_id, `title`=:title, `desc`=:desc, `key`=:key, `copy`=:copy';// 3. 创建SQL语句对象$stmt = $pdo->prepare($sql);// 4. 将变量绑定到SQL语句模板的命名占位符上$sys_id = 1;$title = '少儿故事';$desc = '收集全网最新最全的影视资源';$key = '国产,欧美,日韩';$copy = '小学生';$stmt->bindParam('sys_id', $sys_id, PDO::PARAM_INT);$stmt->bindParam('title', $title, PDO::PARAM_STR);$stmt->bindParam('desc', $desc, PDO::PARAM_STR);$stmt->bindParam('key', $key, PDO::PARAM_STR);$stmt->bindParam('copy', $copy, PDO::PARAM_STR);
# 新增记录// 1. 连接数据库require __DIR__ . '/connect.php';// 2. 创建SQL语句模板$sql = 'INSERT INTO `system` SET `sys_id`= :sys_id, `title`=:title, `desc`=:desc, `key`=:key, `copy`=:copy';// 3. 创建SQL语句对象$stmt = $pdo->prepare($sql);// 4. 将变量绑定到SQL语句模板的命名占位符上$sys_id = 1;$title = '少儿动漫';$desc = '收集全网最新最全的影视资源';$key = '国产,欧美,日韩';$copy = '小学生';$stmt->bindParam('sys_id', $sys_id, PDO::PARAM_INT);$stmt->bindParam('title', $title, PDO::PARAM_STR);$stmt->bindParam('desc', $desc, PDO::PARAM_STR);$stmt->bindParam('key', $key, PDO::PARAM_STR);$stmt->bindParam('copy', $copy, PDO::PARAM_STR);// 5. 执行SQL操作if ($stmt->execute()) {if ($stmt->rowCount() > 0) {echo '成功添加' . $stmt->rowCount(). '条记录, 该记录的主键id是: ' . $pdo->lastInsertId();}} else {die('<pre>' . print_r($stmt->errorInfo(), true));}// 6. 销毁pdo, 关闭连接$pdo = null; // unset($pdo) 等价
# 更新记录// 1. 连接数据库require __DIR__ . '/connect.php';// 2. 创建SQL语句模板$sql = 'UPDATE `category` SET `name` = :name, `alias` = :alias WHERE `cate_id`=:cate_id';// 3. 创建SQL语句对象$stmt = $pdo->prepare($sql);// 4. 将变量绑定到SQL语句模板的命名占位符上$name = 'xjj';$alias = '小姐姐';$cate_id = 4;$stmt->bindParam('name', $name, PDO::PARAM_STR);$stmt->bindParam('alias', $alias, PDO::PARAM_STR);$stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);// 5. 执行SQL操作if ($stmt->execute()) {if ($stmt->rowCount() > 0) {echo '成功更新了' . $stmt->rowCount() . '条记录';}} else {die('<pre>' . print_r($stmt->errorInfo(), true));}// 6. 销毁pdo, 关闭连接$pdo = null; // unset($pdo) 等价
# 删除记录// 1. 连接数据库require __DIR__ . '/connect.php';// 2. 创建SQL语句模板$sql = 'DELETE FROM `category` WHERE `cate_id`=:cate_id';// 3. 创建SQL语句对象$stmt = $pdo->prepare($sql);// 4. 将变量绑定到SQL语句模板的命名占位符上$cate_id = 4;$stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);// 5. 执行SQL操作if ($stmt->execute()) {if ($stmt->rowCount() > 0) {echo '成功删除了' . $stmt->rowCount() . '条记录';}} else {die('<pre>' . print_r($stmt->errorInfo(), true));}// 6. 销毁pdo, 关闭连接$pdo = null; // unset($pdo) 等价
# 查询1: fetch() + while()// 1. 连接数据库require __DIR__ . '/connect.php';// 2. 创建SQL语句模板$sql = 'SELECT * FROM `movies` WHERE `cate_id` = :cate_id';// 3. 创建SQL语句对象$stmt = $pdo->prepare($sql);// 4. 将变量绑定到SQL语句模板的命名占位符上$cate_id = 1;$stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);// 5. 执行SQL操作$stmt->execute();// 遍历while ($movie = $stmt->fetch(PDO::FETCH_ASSOC)) {echo '<pre>' . print_r($movie, true);}// 6. 销毁pdo, 关闭连接$pdo = null; // unset($pdo) 等价
# 查询2: fetchAll()// 1. 连接数据库require __DIR__ . '/connect.php';// 2. 创建SQL语句模板$sql = 'SELECT * FROM `movies` WHERE `cate_id` = :cate_id';// 3. 创建SQL语句对象$stmt = $pdo->prepare($sql);// 4. 将变量绑定到SQL语句模板的命名占位符上$cate_id = 3;$stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);// 5. 执行SQL操作$stmt->execute();// 遍历, 返回二维数组$movies = $stmt->fetchAll(PDO::FETCH_ASSOC);foreach ($movies as $movie) {echo '<pre>' . print_r($movie, true);}// 6. 销毁pdo, 关闭连接$pdo = null; // unset($pdo) 等价
# 查询3: bindColumn()// 1. 连接数据库require __DIR__ . '/connect.php';// 2. 创建SQL语句模板$sql = 'SELECT * FROM `movies` WHERE `cate_id` = :cate_id';// 3. 创建SQL语句对象$stmt = $pdo->prepare($sql);// 4. 将变量绑定到SQL语句模板的命名占位符上$cate_id = 3;$stmt->bindParam('cate_id', $cate_id, PDO::PARAM_INT);// 5. 执行SQL操作$stmt->execute();// 将结果集中的记录中的字段, 绑定到指定的变量上$stmt->bindColumn('name', $name);$stmt->bindColumn('detail', $detail);while ($stmt->fetch(PDO::FETCH_ASSOC)) {$detail = mb_substr($detail,0, 20,'utf-8');echo '片名: ' . $name . '<br>' . '简介: ' . $detail . '...<hr>';}// 6. 销毁pdo, 关闭连接$pdo = null; // unset($pdo) 等价



Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号