博客列表 >PDO 增删改查操作

PDO 增删改查操作

滑稽...
滑稽...原创
2020年05月08日 15:11:14770浏览

PDO 增删改查操作

1.配置数据库的基本参数

  1. <?php
  2. namespace pdo_edu;
  3. // 数据库连接配置参数
  4. return [
  5. // 数据库的类型
  6. 'type' => $type ?? 'mysql',
  7. // 数据库默认主机
  8. 'host' => $host?? 'localhost',
  9. // 默认数据库
  10. 'dbname'=> $dbname ?? 'phpedu',
  11. // 默认字符编码集
  12. 'charset'=> $charset ?? 'utf8',
  13. // 默认端口号
  14. 'port'=> $port ?? '3306',
  15. // 默认的用户名
  16. 'username'=> $username ?? 'root',
  17. // 默认的用户密码
  18. 'password'=> $password ?? 'root',
  19. ];

2.pdo数据库连接

  1. <?php
  2. //连接数据库
  3. namespace pdo_edu;
  4. use Exception;
  5. use PDO;
  6. // 加载配置参数
  7. $config = require 'config/database.php';
  8. // PDO: PHP Data Object, php数据对象
  9. // pdo可以让php对所有类型的数据库, 提供了一个统一的,轻量级的访问接口
  10. // PDO连接数据库三要素, 三个重要参数,
  11. // 数据源: DSN
  12. // 用户名: username
  13. // 用户密码: password
  14. // DSN: 数据库类型:host=数据库的主机地址;dbname=默认的数据库名称;chart=... ;port= ...
  15. // $dsn = 'mysql:host=localhost;dbname=phpedu;charset=utf8;port=3306';
  16. extract($config);
  17. // $dsn = "$type:host=$host;dbname=$dbname";
  18. $dsn = sprintf('%s:host=%s;dbname=%s',$type,$host,$dbname);
  19. // echo $dsn;
  20. try {
  21. // 连接数据库
  22. $pdo = new PDO($dsn,$username,$password);
  23. }catch(Exception $e){
  24. die($e->getMessage());
  25. }

3.pdo数据库查询

  • $sql="SELECT 字段列表 FROM 表名 WHERE 查询条件 "
  1. <?php
  2. // 数据表查询
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = 'SELECT 字段列表 FROM 数据表名称 WHERE 查询条件 '
  9. $sql = 'SELECT `id`,`name`,`price` FROM `goods` WHERE `price` > 1';
  10. // 预处理对象$stmt:为了防止 SQL注入
  11. $stmt = $pdo->prepare($sql);
  12. // 预处理对象$stmt , 就是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. // $staff = $stmt->fetch(PDO::FETCH_ASSOC);
  21. // printf('<pre>%s</pre>',print_r($staff,true));
  22. // $staff = $stmt->fetch(PDO::FETCH_ASSOC);
  23. // printf('<pre>%s</pre>',print_r($staff,true));
  24. // 如果再也没有满足条件的记录, 会返回false
  25. //多条查询
  26. $staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);
  27. // print_r($staffs);
  28. foreach ($staffs as $staff) {
  29. $date = date('Y年m月d日', $staff['add_time']);
  30. printf('id=%s:商品名字=%s---价格=%s---创建时间=%s<br>', $staff['id'], $staff['name'], $staff['price'], $date);
  31. }
  32. // 单条查询
  33. while ($staff = $stmt->fetch(PDO::FETCH_ASSOC)) {
  34. printf('<pre>%s</pre>',print_r($staff,true));
  35. }
  36. // 3. 关闭连接[可选]
  37. // $pdo = null;
  38. unset($pdo);

4.pdo数据库添加

  • $sql = "INSERT 表名 SET name=?,age=?";
  • $sql = "INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);"
  1. <?php
  2. // 数据表新增记录
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = 'INSERT 表名 SET name=?, age=?,.... ';
  9. $sql = "INSERT `goods` SET `name`= ? , `num`=?, `price`=?, `hot`=?,`add_time`=?";
  10. $stmt = $pdo->prepare($sql);
  11. $data = ['香蕉', 3,20, 0, 1579244075];
  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);

5.pdo数据库更新

  • $sql="UPDATE 表名 SET 字段=新的值 WHERE 更新条件 "
  1. <?php
  2. // 数据表更新记录
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = "UPDATE 表名 SET 字段=新值 WHERE 更新条件"
  9. $sql = "UPDATE `goods` SET `name` = ? WHERE `id`=?";
  10. $stmt = $pdo->prepare($sql);
  11. $stmt->execute(['苹果', 6]);
  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);

6.pdo数据库删除

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

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