登录  /  注册
博主信息
博文 47
粉丝 1
评论 0
访问量 38960
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
数据库的CURD操作,PDO的本质与原理,预处理作用
新手1314
原创
668人浏览过

数据库的CURD操作:增删改查

1.新增

  1. //新增
  2. <?php
  3. namespace php;
  4. //导入数据库链接文件
  5. require __DIR__ . '/config/conn.php';
  6. //PDO预处理
  7. $sql = 'INSERT `student` SET `name`=?,`sex`=?,`email`=? ';
  8. //prepare:准备要执行的语句,并返回语句对象
  9. $stmt = $db ->prepare($sql);
  10. //execute:执行一条预处理语句
  11. $stmt = execute(['小龙女',1,'xiaolongnv@php.cn']);
  12. $stmt = execute(['洪七公',0,'hongqigong@php.cn']);
  13. $stmt = execute(['黄蓉',1,'huangrong@php.cn']);
  14. //!rowCount:返回受上一个 SQL 语句影响的行数
  15. //!lastInserId:获取新增数据的ID
  16. //!errorInfo():获取跟上一次语句句柄操作相关的扩展错误信息
  17. if($stmt ->rowCount()>0){
  18. echo '新增成功,新增记录的主键ID为:'.$db ->lastInsertId();
  19. }else{
  20. echo '新增失败';
  21. print_r($stmt -> errorInfo());
  22. }
  23. //输出结果:新增成功,新增记录的主键ID= 3

2.更改

  1. //更改
  2. <?php
  3. namespace php;
  4. require __DIR__ . '/config/conn.php';
  5. $sql = 'UPDATE `student` SET `name`=? WHERE `id`=? ';
  6. $stmt = $db ->prepare($sql);
  7. $stmt -> execute(['郭靖',3]):
  8. if($stmt ->rowCount>0){
  9. echo '更新成功';
  10. }else{
  11. echo '更新失败';
  12. print_f($stmt->errorInfo());
  13. }
  14. //输出结果:更新成功

3.删除

  1. //删除(内部)
  2. <?php
  3. namespace php;
  4. require __DIR__ . '/config/conn.php';
  5. $sql = 'DELETE FROM `student` WHERE `id`=?';
  6. $stmt = $db ->prepare($sql);
  7. $stmt -> execute([8]);
  8. if($stmt ->rowCount()>0){
  9. echo '删除成功';
  10. }else{
  11. echo '删除失败';
  12. print_r($stmt ->errorInfo());
  13. }
  14. //输出结果:删除成功
  15. //删除(外部)
  16. <?php
  17. namespace php;
  18. require __DIR__ . '/config/conn.php';
  19. $sql = 'DELETE FROM `student` WHERE `id`=:id';
  20. $stmt = $db ->prepare($sql);
  21. $stmt -> execute([':id'=>$_GET['id']]);//id=7
  22. if($stmt ->rowCount()>0){
  23. echo '删除成功';
  24. }else{
  25. echo '删除失败';
  26. print_r($stmt ->errorInfo());
  27. }
  28. //输出结果:删除成功

4.查询

  1. <?php
  2. namespace php;
  3. use PDO;
  4. require __DIR__ .'/config/conn.php';
  5. $sql = 'SELECT `id`,`name` FROM `student` WHERE' `id`>?;
  6. $stmt = $db->prepare($sql);
  7. $stmt ->execute([10]);
  8. //单条查询
  9. $staff = $stmt ->fetch(PDO::FETCH_ASSOC);
  10. printf('<pre>%s</pre>',print_r($staff,true));
  11. echo '<hr>';
  12. echo '下面为多条查询';
  13. //多条查询
  14. while($staff = $stmt ->fetch(PDO::FETCH_ASSOC)){
  15. printf('<pre>%s</pre>',print_r($staff,true));
  16. }

PDO本质与原理

  1. 本质:PHP 数据对象 PDO 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。
  2. 原理:PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO 不提供 数据库 抽象层;它不会重写 SQL,也不会模拟缺失的特性。

预处理作用

  1. 查询仅需解析(或预处理)一次,但可以用相同或不同的参数执行多次。当查询准备好后,数据库将分析、编译和优化执行该查询的计划。对于复杂的查询,此过程要花费较长的时间,如果需要以不同参数多次重复相同的查询,那么该过程将大大降低应用程序的速度。通过使用预处理语句,可以避免重复分析/编译/优化周期。简言之,预处理语句占用更少的资源,因而运行得更快
  2. 提供给预处理语句的参数不需要用引号括起来,驱动程序会自动处理。如果应用程序只使用预处理语句,可以确保不会发生SQL 注入。(然而,如果查询的其他部分是由未转义的输入来构建的,则仍存在 SQL 注入的风险)。
批改老师:PHPzPHPz

批改状态:合格

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

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

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