博主信息
博文 65
粉丝 2
评论 0
访问量 74952
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP打通数据奇经八脉,PDO操控数据库实战演练,增删改查(CURD) ~
张福根一修品牌运营
原创
795人浏览过

PDO数据库操作

数据库

连接数据库

  1. require 'connect.php';

connect.php

  1. <?php
  2. namespace pdo_edu;
  3. $config = require 'database.php';
  4. use PDO;
  5. extract($config);
  6. $dsn = sprintf('%s:host=%s;dbname=%s',$type,$host,$dbname);
  7. try {
  8. $pdo = new PDO($dsn,$username ,$password,[PDO::ATTR_ERRMODE=> PDO::ERRMODE_WARNING]);
  9. $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
  10. } catch(\Exception $e) {
  11. die('Connection error: '. $e->getMessage());
  12. }

database.php

  1. <?php
  2. namespace pdo_edu;
  3. return [
  4. 'type' => $type ?? 'mysql',
  5. 'host' => $host ?? 'localhost',
  6. 'dbname' => $dbname ?? 'study',
  7. 'port' => $port ?? '3306',
  8. 'charset' => $charset ?? 'utf8',
  9. 'username' => $username ?? 'root',
  10. 'password' => $password ?? '123456'
  11. ];

PDO查询数据:

方法一:

  1. $sql = "SELECT * FROM `order` WHERE `id`=1";
  2. $stmt = $pdo->query($sql);
  3. foreach($stmt as $row)
  4. {
  5. var_dump($row);
  6. }
  7. // 结果:array(4) { ["id"]=> string(1) "1" ["name"]=> string(6) "张大" ["pro"]=> string(12) "旧房装修" ["price"]=> string(5) "10.00" }

方法二:防sql注入

  1. // PDO::prepare — 准备要执行的SQL语句并返回一个 PDOStatement 对象
  2. // PDOStatement::execute — 执行一条预处理语句
  3. $sql = "SELECT `id`,`name`,`pro` FROM `order` WHERE `id`>=?;";
  4. $stmt = $pdo->prepare($sql);
  5. $stmt->execute([1]);
  6. // var_dump($stmt->fetch());
  7. while ($order = $stmt->fetch())
  8. {
  9. // vprintf() 函数输出格式化的字符串
  10. vprintf('<li>%s:%s | %s</li>',$order);
  11. }
  12. // 结果:
  13. // 1:张大 | 旧房装修
  14. // 2:小二 | 局部改造
  15. // 3:张三 | 防水补漏
  16. // 4:李四 | 墙面翻新
  17. // 5:小伍 | 水电维修

方法三:防sql注入

  1. $sql = "SELECT `id`,`name`,`pro` FROM `order` WHERE `id`>=?;";
  2. $stmt = $pdo->prepare($sql);
  3. $stmt->execute([3]);
  4. $orders = $stmt->fetchAll();
  5. foreach($orders as $order)
  6. {
  7. vprintf('<li>%s:%s | %s</li>',$order);
  8. }
  9. // 结果:
  10. // 3:张三 | 防水补漏
  11. // 4:李四 | 墙面翻新
  12. // 5:小伍 | 水电维修

2、PDO更新数据

方法一:

  1. $sql = "UPDATE `order` SET `price` = 60 WHERE `id` = 3 ";
  2. $res = $pdo->exec($sql);
  3. var_dump($res);//int(1)
  4. if($res == 0 )
  5. {
  6. var_dump($pdo->errorInfo());
  7. }

方法二:

  1. $sql = 'UPDATE `order` SET `name` = ?,`pro`=?,`price`=? WHERE `id`=?;';
  2. $stmt = $pdo->prepare($sql);
  3. // 将值直接绑定到占位符上
  4. $stmt->execute(['大马猴','门窗维修',30,5]);
  5. if($stmt->rowCount() > 0) echo '更新成功' . $stmt->rowCount() . '条记录';//更新成功1条记录

3、PDO插入操作

  1. $sql = 'INSERT `order` SET `name`=?,`pro`=?,`price`=?;';
  2. $stmt = $pdo->prepare($sql);
  3. // PDOStatement::bindParam — 绑定一个参数到指定的变量名
  4. $stmt->bindParam(1,$name);
  5. $stmt->bindParam(2,$pro);
  6. $stmt->bindParam(3,$price);
  7. $name= '东方不败';
  8. $pro = '马桶疏通';
  9. $price = 50.25;
  10. $stmt ->execute();
  11. $stmt->rowCount();
  12. if($stmt->rowCount() > 0) echo '新增成功' . $stmt->rowCount() . '条记录,主键id:' . $pdo->lastInsertId();
  13. // 执行结果:新增成功1条记录,主键id:6

4、PDO删除操作

  1. $sql = 'DELETE FROM `order` WHERE `id`= ?;';
  2. $stmt = $pdo->prepare($sql);
  3. $stmt->execute([3]);
  4. if($stmt->rowCount() > 0) echo '删除成功' . $stmt->rowCount() . '条记录';
  5. // 执行结果:删除成功1条记录

关闭数据连接

  1. $pdo = null;
批改老师:灭绝师太灭绝师太

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
1条评论
灭绝师太 2020-11-30 10:04:18
为福根每次作业的坚持而点赞, 滴水穿石,相信你与其他同学的差距很快就会拉开, 继续坚持~ 预习会话控制~
1楼
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学