Blogger Information
Blog 9
fans 1
comment 0
visits 6998
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PDO 增删改查操作
滑稽...
Original
785 people have browsed it

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);

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