博客列表 >1127作业 把 php公用方法库中的 数据库操作函数, 重写到 Db类中-PHP培训第九期线上班

1127作业 把 php公用方法库中的 数据库操作函数, 重写到 Db类中-PHP培训第九期线上班

淡月
淡月原创
2019年12月01日 21:15:31451浏览

1.Db类

  1. <?php
  2. class Db{
  3. // 连接参数
  4. public $dsn;
  5. public $user;
  6. public $password;
  7. // 连接属性
  8. public $pdo;
  9. // 连接方法
  10. public function connect(){
  11. try{
  12. $this->pdo = new PDO($this->dsn,$this->user,$this->password);
  13. }catch (PDOException $e){
  14. die('数据库连接失败,错误信息:' . $e->getMessage());
  15. }
  16. }
  17. // 通过构造方法实现自动连接数据库
  18. public function __construct($dsn,$user,$password){
  19. $this->dsn = $dsn;
  20. $this->user = $user;
  21. $this->password = $password;
  22. $this->connect();
  23. }
  24. // 查询多条记录
  25. function select($table,$fields='*',$where='',$order='',$limit=''){
  26. // 创建SQL语句
  27. $sql = 'SELECT ';
  28. if (is_array($fields)) {
  29. foreach ($fields as $field){
  30. $sql .= $field . ', ';
  31. }
  32. }else{
  33. $sql .= $fields;
  34. }
  35. $sql = rtrim(trim($sql), ',');
  36. $sql .= ' FROM ' . $table;
  37. // 查询条件
  38. if (!empty($where)){
  39. $sql .= ' WHERE ' . $where;
  40. }
  41. // 排序方式
  42. if (!empty($order)){
  43. $sql .= ' ORDER BY ' . $order;
  44. }
  45. // 分页
  46. if (!empty($limit)){
  47. $sql .= ' LIMIT ' . $limit;
  48. }
  49. $sql .= ';';
  50. // 创建PDO预处理对象
  51. $stmt = $this->pdo->prepare($sql);
  52. // 执行查询操作
  53. if($stmt->execute()){
  54. if($stmt->rowCount()>0){
  55. $stmt -> setFetchMode(PDO::FETCH_ASSOC);
  56. return $stmt->fetchAll();
  57. }
  58. }
  59. return '查询失败';
  60. }
  61. // 查询单条记录
  62. function find($table,$fields,$where=''){
  63. $sql = 'SELECT ';
  64. if(is_array($fields)){
  65. foreach ($fields as $field){
  66. $sql .= $field . ', ';
  67. }
  68. }else{
  69. $sql .= $fields;
  70. }
  71. $sql = rtrim(trim($sql),',');
  72. $sql .= ' FROM ' . $table;
  73. if(!empty($where)){
  74. $sql .= ' WHERE ' . $where;
  75. }
  76. $sql .= ' LIMIT 1;';
  77. $stmt = $this->pdo->prepare($sql);
  78. if($stmt->execute()){
  79. if ($stmt->rowCount()>0){
  80. $stmt->setFetchMode(PDO::FETCH_ASSOC);
  81. return $stmt->fetch();
  82. }
  83. }
  84. return '查询失败';
  85. }
  86. // 新增记录
  87. function insert($table,$data=[]){
  88. $sql = 'INSERT INTO ' . $table . ' SET ';
  89. if (is_array($data)){
  90. foreach ($data as $k => $v){
  91. $sql .= "{$k}='{$v}', ";
  92. }
  93. }else{
  94. return '要以关联数组形式传入数据';
  95. }
  96. $sql = rtrim(trim($sql),',') . ';';
  97. $stmt = $this->pdo->prepare($sql);
  98. if ($stmt->execute()){
  99. if($stmt->rowCount()>0){
  100. return '添加成功了' . $stmt->rowCount() . '条数据';
  101. }
  102. }
  103. return '添加失败';
  104. }
  105. // 更新数据
  106. function update($table,$data=[],$where=''){
  107. $sql = "UPDATE {$table} SET ";
  108. if (is_array($data)){
  109. foreach ($data as $k=>$v){
  110. $sql .= "{$k}='{$v}', ";
  111. }
  112. }
  113. $sql = rtrim(trim($sql),',');
  114. if(!empty($where)){
  115. $sql .= ' WHERE ' . $where;
  116. }
  117. $stmt = $this->pdo->prepare($sql);
  118. if ($stmt->execute()){
  119. if($stmt->rowCount()>0){
  120. return '成功修改了' . $stmt->rowCount() . '条数据';
  121. }
  122. }
  123. return '修改失败';
  124. }
  125. // 删除数据
  126. function delete($table,$where=''){
  127. $sql = 'DELETE FROM ' . $table;
  128. if(!empty($where)){
  129. $sql .= ' WHERE ' . $where;
  130. }
  131. $stmt = $this->pdo->prepare($sql);
  132. if($stmt->execute()){
  133. if($stmt->rowCount()>0){
  134. return '删除成功了' . $stmt->rowCount() . '条数据';
  135. }
  136. }
  137. return '删除失败';
  138. }
  139. // 统计数量
  140. function count_num($table,$where=''){
  141. $sql = 'SELECT COUNT(*) AS count_num FROM ' . $table;
  142. if (!empty($where)){
  143. $sql .= ' WHERE ' . $where;
  144. }
  145. $stmt = $this->pdo->prepare($sql);
  146. if($stmt->execute()){
  147. if($stmt->rowCount()>0){
  148. return $stmt->fetch(PDO::FETCH_ASSOC)['count_num'];
  149. }
  150. }
  151. return '输入条件不正确';
  152. }
  153. public function __destruct(){
  154. $this->pdo = null;
  155. }
  156. }

2. 查询多条数据

  1. <?php
  2. $db = new Db('mysql:host=localhost;dbname=test','root','root');
  3. echo '<pre>' . print_r($db->select('computer','computer_name,computer_money','','computer_money DESC'),true);

3.查询单条数据

  1. <?php
  2. $db = new Db('mysql:host=localhost;dbname=test','root','root');
  3. echo '<pre>' . print_r($db->find('computer','computer_name,computer_money','computer_id=3'),true);

4.新增数据

  1. <?php
  2. $db = new Db('mysql:host=localhost;dbname=test','root','root');
  3. echo $db->insert('computer',['computer_name'=>'戴尔','computer_money'=>8999]);

5.更新数据

  1. <?php
  2. $db = new Db('mysql:host=localhost;dbname=test','root','root');
  3. echo $db->update('computer',['computer_money'=>7999],'computer_id=3');

6.删除数据

  1. <?php
  2. $db = new Db('mysql:host=localhost;dbname=test','root','root');
  3. echo $db->delete('computer','computer_id=2');

7.统计数量

  1. <?php
  2. $db = new Db('mysql:host=localhost;dbname=test','root','root');
  3. echo $db->count_num('computer');

8.手抄作业







声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议