博客列表 >php学习:第16章 数据库基础与常用操作

php学习:第16章 数据库基础与常用操作

王小飞
王小飞原创
2020年05月08日 14:20:55704浏览

数据库配置文件

  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好懂一些。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议