Blogger Information
Blog 52
fans 0
comment 3
visits 42443
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php学习:第16章 数据库基础与常用操作
王小飞
Original
705 people have browsed it

数据库配置文件

  1. <?php
  2. //创建命名空间
  3. namespace db;
  4. // 隐式返回
  5. return
  6. [
  7. // 创建数组记录账户和密码
  8. 'type' => $type ?? 'mysql',
  9. // 数据库默认主机
  10. 'host' => $host?? 'localhost',
  11. // 默认数据库
  12. 'dbname'=> $dbname ?? 'wxf',
  13. // 默认字符编码集
  14. 'charset'=> $charset ?? 'utf8',
  15. // 默认端口号
  16. 'port'=> $port ?? '3306',
  17. // 默认的用户名
  18. 'username'=> $username ?? 'root',
  19. // 默认的用户密码
  20. 'password'=> $password ?? '123456',
  21. ];

数据库链接文件

  1. <?php
  2. // 连接数据库
  3. //命名空间
  4. namespace ljdb;
  5. //继承自带规则
  6. use Exception;
  7. use PDO;
  8. // 加载配置参数 并保存到变量
  9. $config = require 'config/db.php';
  10. // $dsn = 'mysql:host=localhost;dbname=phpedu;charset=utf8;port=3306';
  11. // 将连接文件里面的数组信息对应保存到变量
  12. $type = $config['type'];
  13. $host = $config['host'];
  14. $dbname = $config['dbname'];
  15. $username = $config['username'];
  16. $password = $config['password'];
  17. // 创建DSN 格式化 三要素这里只传了1个 账户和密码没传
  18. $dsn = sprintf('%s:host=%s;dbname=%s', $type,$host,$dbname);
  19. try {
  20. // 连接数据库 这里将三要素全部传进来
  21. $pdo = new PDO($dsn, $username, $password);
  22. // var_dump($pdo);
  23. } catch (Exception $e) {
  24. die($e->getMessage());
  25. }

单条查询与多条查询

  1. <?php
  2. // 数据表查询: 单条查询
  3. namespace dtc;
  4. use PDO;
  5. // 1. 连接数据库 ..代表返回上层
  6. require '..\ljdb.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = 'SELECT字段列表 FROM数据表名称 WHERE 查询条件 '
  9. // `id`,`name`查询筛选的 *查询所有 这里把查询条件去掉了
  10. $sql = 'SELECT * FROM `grxx` ';
  11. // 预处理对象$stmt:为了防止 SQL注入
  12. $stmt = $pdo->prepare($sql);
  13. // 使用预处理对象调用 execute()执行这条sql语句
  14. $stmt->execute();
  15. // 使用:debugDumpParams()调试/查看
  16. // var_dump($stmt->debugDumpParams());
  17. // 获取表中一条记录
  18. $staff = $stmt->fetch(PDO::FETCH_ASSOC);
  19. printf('<pre>%s</pre>',print_r($staff,true));
  20. //单独获取姓名并保存到变量
  21. $xingming = $staff['xm'];
  22. $dh = $staff['dh'];
  23. // 打印姓名
  24. echo '姓名: ' . $xingming . '&ensp;';
  25. echo '电话: ' . $dh;
  26. // 3. 关闭连接[可选]
  27. // $pdo = null;
  28. unset($pdo);
  29. //多条查询
  30. // 数据表查询: 多条查询
  31. namespace dtc;
  32. use PDO;
  33. // 1. 连接数据库 ..代表返回上层
  34. require '..\ljdb.php';
  35. // 2. 操作数据表(CURD)
  36. // $sql = 'SELECT字段列表 FROM数据表名称 WHERE 查询条件 '
  37. // `id`,`name`查询筛选的 *查询所有 这里把查询条件去掉了
  38. $sql = 'SELECT * FROM `grxx` ';
  39. // 预处理对象$stmt:为了防止 SQL注入
  40. $stmt = $pdo->prepare($sql);
  41. // 使用预处理对象调用 execute()执行这条sql语句
  42. $stmt->execute();
  43. // 获取表中一条记录
  44. $staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);
  45. // 使用printf批量打印
  46. foreach ($staffs as $staff) {
  47. printf('id:%s&ensp;姓名:%s&ensp;电话:%s&ensp;地址:%s<br>', $staff['id'], $staff['xm'], $staff['dh'],$staff['dz']);
  48. }
  49. // 3. 关闭连接[可选]
  50. // $pdo = null;
  51. unset($pdo);

数据库更新操作

  1. <?php
  2. // 数据表更新记录
  3. namespace dtc;
  4. use PDO;
  5. // 1. 连接数据库 ..代表返回上层
  6. require '..\ljdb.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = "UPDATE 表名 SET 字段=新值 WHERE 更新条件"
  9. $sql = "UPDATE `grxx` SET `xm` = ? WHERE `id`=?";
  10. $stmt = $pdo->prepare($sql);
  11. $stmt->execute(['小小飞', 2]);
  12. // 判断是否执行成功
  13. // $stmt->rowCount(): 返回写操作产生的受影响的记录数量
  14. if ($stmt->rowCount() === 1) {
  15. echo '更新成功';
  16. } else {
  17. echo '没有记录被更新';
  18. print_r($stmt->errorInfo());
  19. }
  20. // 3. 关闭连接[可选]
  21. unset($pdo);

数据库新增操作

  1. <?php
  2. // 数据表新增记录
  3. namespace dtc;
  4. use PDO;
  5. // 1. 连接数据库 ..代表返回上层
  6. require '..\ljdb.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = 'INSERT 表名 SET name=?, age=?,.... ';
  9. $sql = "INSERT `grxx` SET `xm`= ? , `dh`=?, `dz`=?";
  10. $stmt = $pdo->prepare($sql);
  11. $data = ['新增小飞', 15666886688, '新增小飞的地址'];
  12. $stmt->execute($data);
  13. // 判断是否执行成功
  14. // $stmt->rowCount(): 返回写操作产生的受影响的记录数量
  15. if ($stmt->rowCount() === 1) {
  16. echo '新增成功, 新增记录的主键是: ' . $pdo->lastInsertId();
  17. } else {
  18. echo '新增失败';
  19. print_r($stmt->errorInfo());
  20. }
  21. // 3. 关闭连接[可选]
  22. unset($pdo);

数据库删除操作

  1. <?php
  2. // 数据表删除记录
  3. namespace dtc;
  4. use PDO;
  5. // 1. 连接数据库 ..代表返回上层
  6. require '..\ljdb.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = "DELETE FROM 表名 WHERE 删除条件"
  9. $sql = "DELETE FROM `grxx` WHERE `id`=:id";
  10. $stmt = $pdo->prepare($sql);
  11. $id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
  12. $stmt->execute(['id'=>$_GET['id']]);
  13. // 判断是否执行成功
  14. // $stmt->rowCount(): 返回写操作产生的受影响的记录数量
  15. if ($stmt->rowCount() === 1) {
  16. echo '删除成功';
  17. }
  18. // 3. 关闭连接[可选]
  19. unset($pdo);

总结:感觉pdo比mysqli好懂一些。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:感觉好懂可能是假像
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post