Blogger Information
Blog 25
fans 1
comment 0
visits 12959
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
数据库的增删改查
xueblog9的进阶之旅
Original
434 people have browsed it

数据库得增删改查

数据库得增-插入
  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. // 设置主键时候,自动增量,自动增量,自动增量要设置
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post