博主信息
博文 33
粉丝 0
评论 0
访问量 27295
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
实例演示数据库的增删改查操作
李玉峰
原创
887人浏览过

一. 实例演示数据库的CURD操作

1.数据库连接文件

  1. <?php
  2. namespace pdo_edu;
  3. use PDO;
  4. $dbConfig = require 'database.php';
  5. extract($dbConfig);
  6. // pdo连接三要素
  7. // !1.dsn
  8. $tpl = '%s:host=%s;dbname=%s;port=%s;charset=%s';
  9. $args = [$type,$host,$dbname,$port,$charset];
  10. $dsn =sprintf($tpl,...$args);
  11. //!2.创建数据对象
  12. $db = new PDO($dsn,$username,$password);

2.数据库配置信息

  1. <?php
  2. namespace pdo_edu;
  3. return
  4. [
  5. //dsn
  6. 'type'=>'mysql',
  7. 'host'=>'127.0.0.1',
  8. 'dbname'=>'phpedu',
  9. 'port'=>'3306',
  10. 'charset'=>'utf8',
  11. //username
  12. 'username'=>'root',
  13. 'password'=>'phpedu',
  14. ];

3.数据库的CURD操作

INSERT:添加一条或者多条数据
  1. <?php
  2. namespace php_edu;
  3. /**
  4. * 数据库常用操作
  5. * 1.读操作:select
  6. * 2.写操作:insert,update,delete
  7. * 简称:CURD,增删改查
  8. */
  9. //1.连接数据库
  10. require __DIR__ . '/config/connect.php';
  11. //2.CURD:INSERT
  12. //INSERT 插入
  13. // INSERT 表名 SET 字段1=值1,字段2=值2,...
  14. //注意事项
  15. //1.关键字全大写
  16. //2.表名和字段名使用反引号作为定界符
  17. $sql = 'INSERT `staff` SET `name` = ?,`sex` = ?,`email` = ?';
  18. //!1.创建SQL语句模板对象:使用占位符表示
  19. $stmt = $db->prepare($sql);
  20. // var_dump($stmt);
  21. //!2.执行SQL语句
  22. // 可以添加一条或者多条
  23. $stmt->execute(['曹操',0,'caocao@123.com']);
  24. $stmt->execute(['刘备',0,'liubei@123.com']);
  25. $stmt->execute(['貂蝉',1,'diaochan@123.com']);
  26. //成功
  27. // $stmt->rowCount():返回受影响的记录数量
  28. if($stmt->rowCount() > 0) {
  29. echo '新增成功,新增记录的最后主键ID=' . $db->lastInsertId();
  30. } else{
  31. echo '新增失败';
  32. print_r($stmt->errorInfo());
  33. }
INSERT:添加一条或者多条数据
  1. <?php
  2. namespace php_edu;
  3. //1.连接数据库
  4. require __DIR__ . '/config/connect.php';
  5. //2.CURD:UPDATE 更新操作
  6. // UPDATE 表名 SET 字段1=值1,字段2=值2,...WHERE 更新条件
  7. $sql = 'UPDATE `staff` SET `name` = ?,`email` = ? WHERE `id`=?';
  8. //!1.创建SQL语句模板对象:使用占位符表示
  9. $stmt = $db->prepare($sql);
  10. // var_dump($stmt);
  11. //!2.执行SQL语句
  12. // 更新一条或者多条
  13. $stmt->execute(['小龙女','xiaolongnv@123.com','4']);
  14. //成功
  15. // $stmt->rowCount():返回受影响的记录数量
  16. if($stmt->rowCount() > 0) {
  17. echo '更新成功';
  18. } else{
  19. echo '更新失败';
  20. print_r($stmt->errorInfo());
  21. }
DELETE 删除操作
  1. <?php
  2. namespace php_edu;
  3. //1.连接数据库
  4. require __DIR__ . '/config/connect.php';
  5. //2.CURD:DELETE 删除操作
  6. // DELETE FROM 表名 WHERE 更新条件
  7. // $sql = 'DELETE FROM `staff` WHERE `id`=?';
  8. //'?':匿名占位符
  9. //'string':命名占位符
  10. $sql = 'DELETE FROM `staff` WHERE `id`= :id';
  11. //!1.创建SQL语句模板对象:使用占位符表示
  12. $stmt = $db->prepare($sql);
  13. // var_dump($stmt);
  14. //!2.执行SQL语句
  15. // 更新一条或者多条
  16. // $stmt->execute(['2']);
  17. // $stmt->execute([':id'=>4]);
  18. //通过外部参数删除:例如URL中的get参数删除
  19. // echo $_GET['id'];
  20. // $stmt->execute([':id'=>4]);
  21. $stmt->execute([':id'=>$_GET['id']]);
  22. //成功
  23. // $stmt->rowCount():返回受影响的记录数量
  24. if($stmt->rowCount() > 0) {
  25. echo '删除成功';
  26. } else{
  27. echo '删除失败';
  28. print_r($stmt->errorInfo());
  29. }
SELECT 查询操作

单条数据

  1. <?php
  2. namespace php_edu;
  3. use PDO;
  4. //1.连接数据库
  5. require __DIR__ . '/config/connect.php';
  6. //2.CURD:SELECT 查询操作
  7. // SELECT 字段列表 FROM 表名 WHERE 查询条件 LIMIT
  8. $sql = 'SELECT `id`,`name` FROM `staff` WHERE `id` > :id';
  9. //!1.创建SQL语句模板对象:使用占位符表示
  10. $stmt = $db->prepare($sql);
  11. // var_dump($stmt);
  12. //!2.执行SQL语句
  13. $stmt->execute(['id' =>'3']);
  14. //单条查询
  15. // $staff = $stmt->fetch();
  16. //PDO::FETCH_ASSOC:结果集只返回关联数组数据
  17. // $staff = $stmt->fetch(PDO::FETCH_ASSOC);
  18. // printf('<pre>%s</pre>', print_r($staff,true));
  19. // //再执行一遍,指针查询下一条
  20. // $staff = $stmt->fetch(PDO::FETCH_ASSOC);
  21. // printf('<pre>%s</pre>', print_r($staff,true));
  22. //用循环查询符合条件的全部数据
  23. // while($staff = $stmt->fetch(PDO::FETCH_ASSOC)){
  24. // printf('<pre>%s</pre>', print_r($staff,true));
  25. // }
  26. //在connect.php文件中统一设置数据模式:$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
  27. while($staff = $stmt->fetch()){
  28. printf('<pre>%s</pre>', print_r($staff,true));
  29. }

多条查询

  1. <?php
  2. namespace php_edu;
  3. use PDO;
  4. //1.连接数据库
  5. require __DIR__ . '/config/connect.php';
  6. //2.CURD:SELECT 查询操作
  7. // SELECT 字段列表 FROM 表名 WHERE 查询条件 LIMIT
  8. $sql = 'SELECT `id`,`name` FROM `staff` WHERE `id` > :id';
  9. //!1.创建SQL语句模板对象:使用占位符表示
  10. $stmt = $db->prepare($sql);
  11. // var_dump($stmt);
  12. //!2.执行SQL语句
  13. $stmt->execute(['id' =>'3']);
  14. //fetchALL():返回全部满足条件的记录集合
  15. $staffs = $stmt->fetchALL();
  16. // print_r($staffs);
  17. foreach ($staffs as $staff){
  18. printf('<pre>%s</pre>', print_r($staff,true));
  19. }

二. PDO的本质与原理是什么?为什么要用预处理?

PDO的本质是将SQL语句和数据分开,编程时只写SQL语句模板,执行SQL时再给占位符绑定真实数据。用预处理的好处有:第一,预处理语句占用更少的资源,因而运行得更快。第二,防止SQL注入攻击。

批改老师:PHPzPHPz

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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

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