数据库的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 注入的风险)。

更多相关文章

  1. Laravel中如何轻松容易的输出完整的SQL语句
  2. Android(安卓)判断数据库中是否存在某个表
  3. 【简单的学生管理界面】Android的if语句中有字符串判断
  4. Android入门:SQLite
  5. Android中SQLite操作示例
  6. Android入门:SQLite
  7. Android入门:SQLite
  8. 用PDO连接mysql,用预处理语句实现用户登录时防sql注入小结
  9. Android批量插入数据

随机推荐

  1. Android多线程——Handler
  2. Android DrawerLayout实现抽屉效果
  3. Android 相对布局常用属性
  4. Android(安卓)面试题(经典)
  5. Android EditText无边框问题
  6. Android应用程序组件Content Provider在
  7. Android混淆打包 出现release/jars/3/1f/
  8. android EditText 如何限制只能输入指定
  9. android 开发:使用SwipeRefreshLayout实现
  10. Android(安卓)Studio Error:warning: Ign