博客列表 >数据库的增删改查

数据库的增删改查

xueblog9的进阶之旅
xueblog9的进阶之旅原创
2022年08月19日 19:38:13425浏览

数据库得增删改查

数据库得增-插入
  1. 索引数组+匿名参数
    1.1 $变量名1 = ‘INSERT ‘数据库表名’ SET 表列名1 = ?,表列名2 = ?….;’
    1.2 $变量名2 = $db->prepare($变量名1),创建模板sql语句,预处理对象
    1.3 索引数组与表列名的参数一一对应,依次传入
    1.4 $变量名2 -> execute(数组名),生成最终的(传参后的)sql语句,并且执行

  2. 关联数组+命名参数
    2.1 $变量名1 = ‘INSERT ‘数据库表名’ SET 表列名1 = :变量1,表列名2 = 变量2….;’
    2.2 $变量名2 = $db->prepare($变量名1),创建模板sql语句
    2.3 关联数组的键值与sql语句模板的变量一一对应,依次传入;
    2.4 $变量名2 -> execute(数组名),生成最终的(传参后的)sql语句,并且执行

  3. 参数绑定:值绑定 bindValue()
    3.1 对预处理对象进行值绑定,对象->bindValue(索引,变量,参数类型),execute()不需要传入参数,直接执行execute()即可
    3.2 该值为静态绑定,sql模板绑定到了具体的值,变量直接必须先声明才可用;

  4. 参数绑定:引用绑定 bindParam():
    4.1 对预处理对象进行值绑定,对象->bindValue(索引,变量,参数类型),execute()不需要传入参数,直接执行execute()即可
    4.2 该值为静态绑定,sql模板绑定到了具体的变量,本身变量就是一个声明,下面对变量进行传参即可;
    4.3 推荐只是用引用绑定

  5. 二维数组-新增多条数据,
    5.1 使用引用绑定,配合foreach遍历执行sql语句
    5.2 foreach配合list循环解构数组,结合引用帮定的特性,新增多条数据

  6. 失败的检测与处理
    6.1 预处理对象->rowCount():可以返回影响的记录数量—就是成功数量
    6.2 连接实例->lastInsertId():可以返回最新的id号
    6.3 预处理对象->errorInfo():可以返回失败的原因
    6.4 rowCount作为条件,判断新增失败,还是成功,

  7. 数据更新操作
    7.1 $变量名1 = ‘UPDATE ‘数据库表名’ SET 表列名1 = ?,表列名2 = ?….WHERE ‘id’ = ?;’
    7.2 strpos:判断某个字符串中是否包含某个字符,stripos:一样,区别可忽略大小写
    7.3 WHERE为条件,参数传入与表列名方式一致,注意禁止无条件更新,否则会更新全部

  8. 数据删除操作
    8.1 $变量名1 = ‘DELETE FROM ‘数据库表名’WHERE ‘id’ = ?;’
    8.2 注意禁止无条件删除,否则会删除整表

  9. 数据查询操作
    9.1 $变量名1 = ‘SELECT 表列名1,表列名2…FROM 数据库表名 LIMIT ?;’(LIMIT表示前几列)
    9.2 fetch+while逐个循环输出,fetch:指针自动下移,出现一次移动一次,配合while使用
    9.3 fetchAll+foreach,循环遍历输出,fetchAll直接输出一个二维数组,用foreach的值特性遍历输出,
    9.4 fetch以及fetchAll添加属性:PDO::FETCH_ASSOC,返回的结果为关联数组,就是键(列名)=>内容

其他PDO方法

  1. debugDumpParams():打印执行的语句,网页源代码查看
  2. errorInfo():打印失败信息
  3. rowCount():返回变化的数量
  4. lastInsertId():返回表中最后一个id号

源码实例

  1. <?php
  2. namespace _0817;
  3. use PDO;
  4. use PDOStatement;
  5. use test\control\test1;
  6. $dsn = 'mysql:host=localhost;dbname=phpedu;port:3306;charset=utf8';
  7. $username = 'root';
  8. $password = 'root';
  9. $db = new PDO($dsn,$username,$password);
  10. // // 插入数据
  11. // $sqlinsert = 'INSERT `test` SET `sn` = ?, `frn` = ?, `imsi` = ?;';
  12. // $sql = 'INSERT `staff` SET `name`= ?,`sex`= ?,`email`= ?;';
  13. // 创建sql语句对象,制作模板的sql语句
  14. // $stmt = $db->prepare($sqlinsert);
  15. // $stmt->bindParam(1,$sn,PDO::PARAM_STR);
  16. // $stmt->bindParam(2,$frn,PDO::PARAM_STR);
  17. // $stmt->bindParam(3,$imsi,PDO::PARAM_STR);
  18. // $data = [['11','38950','46011'],
  19. // ['22','38400','46001'],
  20. // ['33','38950','46002']];
  21. // 遍历一次:list($sn,$frn,$imsi)=一个数组,就解构一次
  22. // foreach($data as list($sn,$frn,$imsi)){
  23. // $stmt->execute();
  24. // echo '新增成功, id = ' . $db->lastInsertId() . '<br>';
  25. // };
  26. // 条件查询,用where
  27. // $sqlselect = 'SELECT `sn`,`frn`,`imsi` FROM `test` where `imsi`="460001234512345";';
  28. $sqlselect = 'SELECT `sn`,`frn`,`imsi` FROM `test`;';
  29. // $sqlselect = 'SELECT `sn`,`frn`,`imsi` FROM `test` LIMIT ?;' ;
  30. // LIMIT ?:查询前面几个,
  31. $stmt = $db->prepare($sqlselect);
  32. // $stmt->bindValue(1,5,PDO::PARAM_INT);
  33. if($stmt->execute()){
  34. // $result = $stmt->fetch(PDO::FETCH_ASSOC);
  35. // if ($result){
  36. // printf('<pre>%s</pre>',print_r($result,true));
  37. // }else{
  38. // echo '无';
  39. // }
  40. // fetch+while循环
  41. // while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
  42. // printf('<pre>%s</pre>',print_r($result,true));
  43. // }
  44. // foreach配合fetchALL循环
  45. $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
  46. foreach($result as $value){
  47. printf('<pre>%s</pre>',print_r($value,true));
  48. }
  49. } else {
  50. print_r($stmt->errorInfo());
  51. }
  52. // echo '新增成功, id = ' . $db->lastInsertId() . '<br>';
  53. // 设置主键时候,自动增量,自动增量,自动增量要设置
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议