博客列表 >PHP第13课-类的封装继承-九期线上班

PHP第13课-类的封装继承-九期线上班

Content っ
Content っ 原创
2019年12月02日 23:03:43692浏览

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

MydB

  1. <?php
  2. class MyDb{
  3. //pdo成员
  4. private $pdo = null;
  5. //构造函数
  6. public function __construct()
  7. {
  8. $this->pdo = $this->initPdo();
  9. }
  10. //析构函数
  11. function __destruct()
  12. {
  13. $this->unPdoDB();
  14. }
  15. /*初始化pdo*/
  16. private function initPdo(){
  17. $db=[
  18. 'type' => 'mysql',
  19. 'host' => 'localhost',
  20. 'port' => '3306',
  21. 'dbname' => 'jason',
  22. 'username' => 'root',
  23. 'password' => 'root'
  24. ];
  25. //配置dsn
  26. $dsn = "{$db['type']}:host={$db['host']};dbname={$db['dbname']}";
  27. try{
  28. $pdo = new PDO($dsn,$db['username'],$db['password']);
  29. return $pdo;
  30. }catch (PDOException $exception){
  31. echo '数据连接异常'.$exception->getMessage();
  32. return false;
  33. }
  34. }
  35. /*查询操作*/
  36. public function select($table,$fields, $where='', $order='',$limit=''){
  37. $sql = 'SELECT ';
  38. if (is_array($fields)){
  39. foreach ($fields as $field){
  40. echo $field;
  41. $sql .= $field.', ';
  42. }
  43. }else{
  44. $sql .= $fields;
  45. }
  46. $sql = rtrim(trim($sql),',');
  47. $sql .= ' FROM '.$table;
  48. //查询条件
  49. if(!empty($where)){
  50. $sql .= ' WHERE '.$where;
  51. }
  52. //排序条件
  53. if(!empty($order)) {
  54. $sql .= ' order by '.$order;
  55. }
  56. //分页条件
  57. if(!empty($limit)) {
  58. $sql .= ' limit '.$limit;
  59. }
  60. $sql .= ';';
  61. echo $sql;
  62. echo '<hr>';
  63. //创建PDO预处理对象
  64. $stmt = $this->pdo->prepare($sql);
  65. //执行查询操作
  66. if($stmt->execute()){
  67. if($stmt->rowCount()>0){
  68. $stmt->setFetchMode(PDO::FETCH_ASSOC);
  69. //返回一个二维数组
  70. return $stmt->fetchAll();
  71. }
  72. } else {
  73. return false;
  74. }
  75. }
  76. /**
  77. * 查询单条记录
  78. * @param $db
  79. * @param $table 表名
  80. * @param $fields 查询的字段 *
  81. * @param string $where 条件
  82. * @return array
  83. */
  84. function find($table,$fields,$where=''){
  85. $sql = 'SELECT ';
  86. if (is_array($fields)){
  87. foreach ($fields as $field){
  88. $sql .= $field.', ';
  89. }
  90. }else{
  91. $sql .= $fields;
  92. }
  93. $sql = rtrim(trim($sql),',');
  94. $sql .= ' FROM '.$table;
  95. //查询条件
  96. if(!empty($where)){
  97. $sql .= ' WHERE '.$where;
  98. }
  99. $sql .= ' LIMIT 1;';
  100. //创建PDO预处理对象
  101. $stmt = $this->pdo->prepare($sql);
  102. //执行查询操作
  103. if($stmt->execute()){
  104. if($stmt->rowCount()>0){
  105. $stmt->setFetchMode(PDO::FETCH_ASSOC);
  106. return $stmt->fetch();
  107. }
  108. } else {
  109. return false;
  110. }
  111. }
  112. /**
  113. * 新增数据
  114. * @param $table
  115. * @param $data
  116. * @return bool
  117. */
  118. public function insertDb($table,$data=[]){
  119. $sql = "INSERT INTO {$table} SET ";
  120. if (is_array($data)){
  121. foreach ($data as $key=>$value){
  122. $sql .= "{$key} = '{$value}' , ";
  123. }
  124. }else{
  125. return false;
  126. }
  127. $sql = rtrim(trim($sql),',').';';
  128. echo 'sql语句'.$sql;
  129. $stmt = $this->pdo->prepare($sql);
  130. //执行新增操作
  131. if($stmt->execute()){
  132. if($stmt->rowCount()>0){
  133. return true;
  134. }
  135. } else {
  136. return false;
  137. }
  138. }
  139. /**
  140. * 删除记录
  141. * @param $db
  142. * @param $table
  143. * @param string $where
  144. * @return bool
  145. */
  146. function delete($table,$where=''){
  147. $sql = "DELETE FROM {$table}";
  148. if (!empty($where)){
  149. $sql .= " WHERE {$where}";
  150. }else{
  151. return false;
  152. }
  153. echo $sql;
  154. $stmt = $this->pdo->prepare($sql);
  155. //执行新增操作
  156. if($stmt->execute()){
  157. if($stmt->rowCount()>0){
  158. return true;
  159. }
  160. } else {
  161. return false;
  162. }
  163. }
  164. /**
  165. * 更新数据
  166. * @param $db
  167. * @param $table
  168. * @param $data
  169. * @return bool
  170. */
  171. function update($table,$data=[], $where='') {
  172. $sql = "UPDATE {$table} SET ";
  173. if (is_array($data)){
  174. foreach ($data as $key=>$value){
  175. $sql .= "{$key} = '{$value}' , ";
  176. }
  177. }else{
  178. return false;
  179. }
  180. $sql = rtrim(trim($sql),',');
  181. //更新条件
  182. $sql .= "WHERE {$where}";
  183. //去掉尾部逗号,并添加分号结束
  184. echo $sql;
  185. $stmt = $this->pdo->prepare($sql);
  186. //执行新增操作
  187. if($stmt->execute()){
  188. if($stmt->rowCount()>0){
  189. return true;
  190. }
  191. } else {
  192. return false;
  193. }
  194. }
  195. /**
  196. * 统计数量
  197. * @param $table
  198. * @param string $where
  199. * @return number
  200. */
  201. function count_num($table,$where){
  202. //创建SQL语句
  203. $sql = 'SELECT count(*) as count_number FROM '.$table;
  204. //查询条件
  205. if(!empty($where)){
  206. $sql .= ' WHERE '.$where;
  207. }
  208. //创建PDO预处理对象
  209. $stmt = $this->pdo->prepare($sql);
  210. //执行查询操作
  211. if($stmt->execute()){
  212. if($stmt->rowCount()>0){
  213. $row = $stmt->fetch(PDO::FETCH_ASSOC);
  214. $rows = $row['count_number'];
  215. return $rows;
  216. }
  217. } else {
  218. return false;
  219. }
  220. }
  221. //销毁PDO连接
  222. public function unPdoDB(){
  223. $this->pdo = null;
  224. }
  225. }
  226. /***********实例化对象和调用方法**********/
  227. //创建对象
  228. $obj = new MyDb();
  229. //查询多条记录
  230. $arr = $obj->select('account','username');
  231. print_r($arr);
  232. echo '<hr>';
  233. //查询单条
  234. $arr1 = $obj->find('account','username','user_id=6');
  235. print_r($arr1);
  236. echo '<hr>';
  237. //增加数据
  238. $data = [
  239. 'name' => 'xjp',
  240. 'alias' => '新加坡',
  241. 'cate_id' => 6
  242. ];
  243. if ($obj->insertDb('category',$data)){
  244. echo '增加数据成功';
  245. }else{
  246. echo '增加数据失败';
  247. }
  248. echo '<hr>';
  249. //删除数据
  250. if ($obj->delete('category','cate_id=6')){
  251. echo '删除数据成功';
  252. }else{
  253. echo '删除数据失败';
  254. }
  255. echo '<hr>';
  256. //更新数据
  257. $data = [
  258. 'name' => 'tg1',
  259. 'alias' => '泰国'
  260. ];
  261. if ($obj->update('category',$data,'cate_id=7')){
  262. echo '更新数据成功';
  263. }else{
  264. echo '更新数据失败';
  265. }
  266. //获取数量
  267. $nub = $obj->count_num('account','user_id');
  268. echo '获取数量'.$nub;
  269. //销毁连接
  270. $obj->unPdoDB();
  271. $obj = null;
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议