批改状态:合格
老师批语:如果学习给你带了成就感, 那就好好坚持下去
config/database.php
<?phpnamespace pdo_edu;// 数据库连接配置参数return [// 数据库的类型'type' => $type ?? 'mysql',// 数据库默认主机'host' => $host?? 'localhost',// 默认数据库'dbname'=> $dbname ?? 'phpedu',// 默认字符编码集'charset'=> $charset ?? 'utf8',// 默认端口号'port'=> $port ?? '3306',// 默认的用户名'username'=> $username ?? 'root',// 默认的用户密码'password'=> $password ?? 'root',];
connect.php
<?php// 连接数据库namespace pdo_edu;use Exception;use PDO;// 加载配置参数$config = require 'config/database.php';// PDO: PHP Data Object, php数据对象// pdo可以让php对所有类型的数据库, 提供了一个统一的,轻量级的访问接口// PDO连接数据库三要素, 三个重要参数,// 数据源: DSN// 用户名: username// 用户密码: password// DSN: 数据库类型:host=数据库的主机地址;dbname=默认的数据库名称;chart=... ;port= ...// $dsn = 'mysql:host=localhost;dbname=phpedu;charset=utf8;port=3306';$type = $config['type'];$host = $config['host'];$dbname = $config['dbname'];$username = $config['username'];$password = $config['password'];// 创建DSN$dsn = sprintf('%s:host=%s;dbname=%s', $type,$host,$dbname);try {// 连接数据库$pdo = new PDO($dsn, $username, $password);// var_dump($pdo);} catch (Exception $e) {die($e->getMessage());}
1、select1.php,查询条件:age>40
数据表内容:
查询结果显示:

<?php// 数据表查询: 单条查询namespace pdo_edu;use PDO;// 1. 连接数据库require 'connect.php';// 2. 操作数据表(CURD)// $sql = 'SELECT 字段列表 FROM 数据表名称 WHERE 查询条件 '$sql = 'SELECT `id`,`name` FROM `staffs` WHERE `age` > 40';// 预处理对象$stmt:为了防止 SQL注入$stmt = $pdo->prepare($sql);// 预处理对象$stmt , 就是SQL语句对象// 使用预处理对象调用 execute()执行这条sql语句$stmt->execute();// 使用:debugDumpParams()调试/查看// var_dump($stmt->debugDumpParams());// 获取表中一条记录// $staff = $stmt->fetch(PDO::FETCH_ASSOC);// printf('<pre>%s</pre>',print_r($staff,true));// $staff = $stmt->fetch(PDO::FETCH_ASSOC);// printf('<pre>%s</pre>',print_r($staff,true));// $staff = $stmt->fetch(PDO::FETCH_ASSOC);// printf('<pre>%s</pre>',print_r($staff,true));// 如果再也没有满足条件的记录, 会返回falsewhile ($staff = $stmt->fetch(PDO::FETCH_ASSOC)) {printf('<pre>%s</pre>',print_r($staff,true));}// 3. 关闭连接[可选]// $pdo = null;unset($pdo);
select2.php
<?php// 数据表查询: 多条查询namespace pdo_edu;use PDO;// 1. 连接数据库require 'connect.php';// 2. 操作数据表(CURD)// $sql = 'SELECT 字段列表 FROM 数据表名称 WHERE 查询条件 '// 匿名占位符: ?// $sql = 'SELECT * FROM `staffs` WHERE `age` > ?';// 命名占位符: 给一个有意义 的字符串, 必须用冒号开始$sql = 'SELECT * FROM `staffs` WHERE `age` > :age';// 预处理对象$stmt:为了防止 SQL注入$stmt = $pdo->prepare($sql);// 预处理对象$stmt , 就是SQL语句对象// 使用预处理对象调用 execute()执行这条sql语句// 对应匿名占位符使用是索引数组// $stmt->execute([50]);// 对应命名占位符使用是关联数组$stmt->execute(['age'=>60]);$staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);// print_r($staffs);foreach ($staffs as $staff) {$date = date('Y年m月d日', $staff['hiredate']);printf('id=%s:姓名=%s---职位=%s---入职时间=%s<br>', $staff['id'], $staff['name'], $staff['position'], $date);}// 3. 关闭连接[可选]// $pdo = null;unset($pdo);// fetch()// fetchAll()
2、insert.php
<?php// 数据表新增记录namespace pdo_edu;use PDO;// 1. 连接数据库require 'connect.php';// 2. 操作数据表(CURD)// $sql = 'INSERT 表名 SET name=?, age=?,.... ';$sql = "INSERT `staffs` SET `name`= ? , `age`=?, `sex`=?, `position`=?, `mobile`=?, `hiredate`=?";$stmt = $pdo->prepare($sql);$data = ['朱老师', 66, 1, '讲师', '18977665544', 1579244075];$stmt->execute($data);// 判断是否执行成功// $stmt->rowCount(): 返回写操作产生的受影响的记录数量if ($stmt->rowCount() === 1) {echo '新增成功, 新增记录的主键是: ' . $pdo->lastInsertId();} else {echo '新增失败';print_r($stmt->errorInfo());}// 3. 关闭连接[可选]unset($pdo);
3、update.php
<?php// 数据表更新记录namespace pdo_edu;use PDO;// 1. 连接数据库require 'connect.php';// 2. 操作数据表(CURD)// $sql = "UPDATE 表名 SET 字段=新值 WHERE 更新条件"$sql = "UPDATE `staffs` SET `name` = ? WHERE `id`=?";$stmt = $pdo->prepare($sql);$stmt->execute(['王老师', 11]);// 判断是否执行成功// $stmt->rowCount(): 返回写操作产生的受影响的记录数量if ($stmt->rowCount() === 1) {echo '更新成功';} else {echo '没有记录被更新';print_r($stmt->errorInfo());}// 3. 关闭连接[可选]unset($pdo);
4、delete.php
<?php// 数据表删除记录namespace pdo_edu;use PDO;// 1. 连接数据库require 'connect.php';// 2. 操作数据表(CURD)// $sql = "DELETE FROM 表名 WHERE 删除条件"$sql = "DELETE FROM `staffs` WHERE `id`=:id";$stmt = $pdo->prepare($sql);$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);$stmt->execute(['id'=>$_GET['id']]);// 判断是否执行成功// $stmt->rowCount(): 返回写操作产生的受影响的记录数量if ($stmt->rowCount() === 1) {echo '删除成功';}// 3. 关闭连接[可选]unset($pdo);
本次课程老师讲解非常细致,我也认真回看了视频,并实操了每一段代码予以加深理解,对原本感觉有神秘面纱的数据库内容进行了第一次成功实操,使用了phpstudy自带的MySQL5.7.26数据库及navicat管理工具,当第一次修改完成相关设置参数并实现查询、新增、更新、删除等功能的时候,内心还是有点小窃喜的,满足学习带来的小乐趣,后续将花更多时间深入学习。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号