Blogger Information
Blog 23
fans 0
comment 3
visits 15292
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
11月27日_pdo方法库封装为Db类使用 - 九期线上班
木易
Original
764 people have browsed it

1. 把 php公用方法库中的 数据库操作函数, 重写到 Db类中。

  1. <?php
  2. //PDO类封装
  3. class MyDB
  4. {
  5. // 连接参数
  6. public $dsn;
  7. public $user;
  8. public $password;
  9. // 连接属性
  10. public $pdo;
  11. // 连接方法
  12. public function connect()
  13. {
  14. $this->pdo = new PDO($this->dsn, $this->user, $this->password);
  15. }
  16. // 实例化后自动连接数据库
  17. public function __construct($dsn, $user, $password)
  18. {
  19. $this->dsn = $dsn;
  20. $this->user = $user;
  21. $this->password = $password;
  22. // 调用对象方法,实现自动连接
  23. $this->connect();
  24. }
  25. //查询多条记录
  26. public function select($table, $fields, $where = '', $order = '', $limit = '')
  27. {
  28. //拼接sql
  29. $sql = 'SELECT';
  30. if (is_array($fields)) {
  31. foreach ($fields as $field) {
  32. $sql .= $field . ',';
  33. }
  34. } else {
  35. $sql .= $fields;
  36. }
  37. $sql = rtrim(trim($sql), ',');
  38. $sql .= 'FROM' . $table;
  39. // 查询条件
  40. if (!empty($where)) {
  41. $sql .= 'WHERE' . $where;
  42. }
  43. // 排序条件
  44. if (!empty($order)) {
  45. $sql .= 'order by' . $order;
  46. }
  47. // 分页条件
  48. if (!empty($limit)) {
  49. $sql .= 'limit' . $limit;
  50. }
  51. $sql .= ';';
  52. // 创建PDO预处理对象
  53. $stmt = $this->pdo->prepare($sql);
  54. // 执行查询操作
  55. if ($stmt->execute()) {
  56. if ($stmt->rowCount() > 0) {
  57. $stmt->setFetchMode(PDO::FETCH_ASSOC);
  58. // 返回一个二维数组
  59. return $stmt->fetchAll();
  60. }
  61. } else {
  62. return false;
  63. }
  64. }
  65. // 查询单条记录
  66. public function find($table, $fields, $where = '')
  67. {
  68. $pdo = $this->pdo;
  69. // 创建sql语句
  70. $sql = 'SELECT';
  71. if (is_array($fields)) {
  72. foreach ($fields as $field) {
  73. $sql .= $field . ',';
  74. }
  75. }else{
  76. $sql.=$fields;
  77. }
  78. $sql = rtrim(trim($sql), ',');
  79. $sql .= 'FROM' . $table;
  80. // 查询条件
  81. if (!empty($where)) {
  82. $sql .= 'WHERE' . $where;
  83. }
  84. $sql .= 'LIMIT 1;';
  85. // 创建PDO预处理对象
  86. $stmt = $pdo->prepare($sql);
  87. // 执行查询操作
  88. if ($stmt->execute()) {
  89. if ($stmt->rowCount() > 0) {
  90. $stmt->setFetchMode(PDO::FETCH_ASSOC);
  91. return $stmt->fetch();
  92. }
  93. } else {
  94. return false;
  95. }
  96. }
  97. //添加数据
  98. public function add($table, $data = [])
  99. {
  100. // 创建sql语句
  101. $sql = "INSERT INTO {$table} SET";
  102. // 组装插入语句
  103. if (is_array($data)) {
  104. foreach ($data as $k => $v) {
  105. $sql .= $k . '="' . $v . '",';
  106. }
  107. } else {
  108. return false;
  109. }
  110. //去掉尾部逗号,并添加分号结束
  111. $sql = rtrim(trim($sql), ',') . ';';
  112. // 创建PDO预处理对象
  113. $stmt = $this->pdo->prepare($sql);
  114. // 执行新增操作
  115. if ($stmt->execute()) {
  116. if ($stmt->rowCount() > 0) {
  117. return true;
  118. }
  119. } else {
  120. return false;
  121. }
  122. }
  123. // 更新数据
  124. public function update($table, $data = [], $where = '')
  125. {
  126. // 创建sql语句
  127. $sql = "UPDATE{$table}SET";
  128. // 组装修改语句
  129. if (is_array($data)) {
  130. foreach ($data as $k => $v) {
  131. $sql .= $k . '="' . $v . '",';
  132. }
  133. }
  134. // 去掉尾部逗号,并添加分号结束
  135. $sql = rtrim(trim($sql), ',');
  136. // 查询条件
  137. if (!empty($where)) {
  138. $sql .= 'WHERE' . $where;
  139. }
  140. // 创建PDO预处理对象
  141. $stmt = $this->pdo->prepare($sql);
  142. // 执行新增操作
  143. if ($stmt->execute()) {
  144. if ($stmt->rowCount() > 0) {
  145. return true;
  146. }
  147. } else {
  148. return false;
  149. }
  150. }
  151. // 删除记录
  152. public function real_delete($table, $where = '')
  153. {
  154. // 创建sql语句
  155. $sql = 'DELETE FROM {$table}';
  156. // 查询语句
  157. if (!empty($where)) {
  158. $sql .= 'WHERE' . $where;
  159. }
  160. // 创建pdo预处理对象
  161. $stmt = $this->pdo->prepare($sql);
  162. // 执行删除操作
  163. if ($stmt->execute()) {
  164. if ($stmt->rowCount() > 0) {
  165. return true;
  166. }
  167. } else {
  168. return false;
  169. }
  170. }
  171. // 统计数量
  172. public function count_num($table, $where = '')
  173. {
  174. // 创建sql语句
  175. $sql = 'SELECT count(*) as count_number FROM' . $table;
  176. //查询条件
  177. if (!empty($where)) {
  178. $sql .= 'WHERE' . $where;
  179. }
  180. // 创建sql预处理对象
  181. $stmt=$this->pdo->prepare($sql);
  182. // 执行查询操作
  183. if($stmt->execute()){
  184. if($stmt->rowCount()>0){
  185. $row =$stmt->fetch(PDO::FETCH_ASSOC);
  186. $rows= $row['count_number'];
  187. return $rows;
  188. }
  189. }else{
  190. return false;
  191. }
  192. }
  193. // 析构方法
  194. public function __destruct()
  195. {
  196. $this->pdo =null;
  197. }
  198. }
  199. //实例化
  200. $db =new MyDB('mysql:host=localhost;dbname=ou','root','root');
  201. if($db->pdo){
  202. echo '<h2>连接成功</h2>';
  203. }
  204. echo '<h3>查询多条:</h3>';
  205. $res =$db->select('user','username');
  206. echo '<pre>';
  207. print_r($res);
  208. echo '<hr>';
  209. echo '<h3>查询一条</h3>';
  210. $res =$db->find('user','username','uid=1');
  211. print_r($res);
  212. echo '<hr>';
  213. echo '<h3>添加数据</h3>';
  214. $data=[
  215. 'username'=>'xiaohong',
  216. 'password'=>'123456',
  217. ];
  218. $insert =$db->add('user',$data);
  219. var_dump($insert);
  220. echo '<hr>';
  221. echo '<h3>更新数据:</h3>';
  222. $data = [
  223. 'password' => '111111',
  224. ]; //这里密码的值不改,还是原来123456 居然执行结果会报null
  225. $update = $db->update('user',$data,'uid=3');
  226. var_dump($update);
  227. echo '<hr>';
  228. echo '<h3>删除数据:</h3>';
  229. $delete = $db->real_delete('user','uid=3');
  230. var_dump($delete);
  231. echo '<hr>';
  232. echo '<h3>统计:</h3>';
  233. $count = $db->count_num('user');
  234. echo $count;
  235. echo '<pre>';

结果是失败的,但是数据库又连接进去了,自己研究失败希望能得到解答。

数据库情况

个人感悟:自己还有很多不足需要花更多时间学习,继续加油。

Correcting teacher:天蓬老师天蓬老师

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
1 comments
木易 2019-12-16 10:23:22
老师抱歉,提交作业的时候没核对md语法,重新进行提交了一次
1 floor
Author's latest blog post