欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP PDO封装静态类代码分享

程序员文章站 2022-05-31 09:53:43
...
  1. /**
  2. * Class DB
  3. * 数据库操作类
  4. */
  5. class DB {
  6. /**
  7. * @var
  8. * @return CDB
  9. */
  10. private static $db;
  11. /**获取CDb类
  12. * @param $table_name 表名称
  13. * @param string $db_setting 调用数据库配置项
  14. * @param array $db_config 数据库配置
  15. * @return CDb
  16. */
  17. public static function cdb($table_name='',$db_setting='default',$db_config=array()){
  18. if(!isset(self::$db)){
  19. $db = new CDb($table_name,$db_setting,$db_config);
  20. self::$db=$db;
  21. }else{
  22. $db=self::$db;
  23. }
  24. return $db;
  25. }
  26. /** 配置
  27. * @param $table_name 表名称
  28. * @param string $db_setting 调用数据库配置项
  29. * @param array $db_config 数据库配置
  30. * @return CDb
  31. */
  32. public static function init($table_name='',$db_setting='default',$db_config=array()) {
  33. return self::cdb($table_name,$db_setting,$db_config);
  34. }
  35. /**
  36. * 执行删除记录操作
  37. * @param $table 表名称
  38. * @param $condition 删除数据条件,不充许为空。可以为数组
  39. * @return boolean
  40. */
  41. public static function delete($table, $condition) {
  42. $db=self::cdb();
  43. $db->setTableName($table);
  44. return $db->delete($condition);
  45. }
  46. /**
  47. * 执行添加记录操作
  48. * @param $table 表名称
  49. * @param array $data要增加的数据,参数为数组。数组key为字段值,数组值为数据取值
  50. * @param bool $return_insert_id 是否返回新建ID号
  51. * @param bool $replace 是否采用 replace into的方式添加数据
  52. * @return boolean
  53. */
  54. public static function insert($table, $data, $return_insert_id = false, $replace = false) {
  55. $db=self::cdb();
  56. $db->setTableName($table);
  57. return $db->insert($data, $return_insert_id, $replace);
  58. }
  59. /**
  60. * 获取最后一次添加记录的主键号
  61. * @return int
  62. */
  63. public static function insertID() {
  64. $db=self::cdb();
  65. return $db->insert_id();
  66. }
  67. /**
  68. * 执行更新记录操作
  69. * @param $table 表名称
  70. * @param $data 要更新的数据内容,参数为数组
  71. * 为数组时数组key为字段值,数组值为数据取值
  72. * 为数组时[例: array('name'=>'lanmps','password'=>'123456')]
  73. * 数组的另一种使用array('name'=>'+=1', 'base'=>'-=1');程序会自动解析为`name` = `name` + 1, `base` = `base` - 1
  74. * 字符串,请按照格式 :
  75. * 字符串 [例2:array('catid=:catid AND time>=:time ',array(':catid'=>10,':time'=>'2012-02-10')) ]
  76. * @param $where 更新数据时的条件,
  77. * 字符串,请按照格式 :
  78. * 字符串 [例1:" id=1 and time>$time " ]
  79. * 字符串 [例2:array('catid=:catid AND time>=:time ',array(':catid'=>10,':time'=>'2012-02-10')) ]
  80. * 数组时 [例: array('name'=>'lanmps','password'=>'123456')]
  81. * @return boolean
  82. */ bbs.it-home.org
  83. public static function update($table, $data, $where) {
  84. $db=self::cdb();
  85. $db->setTableName($table);
  86. return $db->update($data,$where);
  87. }
  88. /**
  89. * 获取单条记录查询
  90. * @param array $sql 查询条件语句
  91. * @return array/null数据查询结果集,如果不存在,则返回空
  92. */
  93. public static function fetchFirst($sql) {
  94. $db=self::cdb();
  95. return $db->fetch($sql);
  96. }
  97. /**
  98. * 执行sql查询
  99. * @param $sql查询条件
  100. * @return array 查询结果集数组
  101. */
  102. public static function fetchAll($sql) {
  103. $db=self::cdb();
  104. return $db->fetchAll($sql);
  105. }
  106. /**
  107. * 直接执行sql查询
  108. * @param $sql 查询sql语句
  109. * @return
  110. */
  111. public static function query($sql) {
  112. $db=self::cdb();
  113. return $db->exec($sql);
  114. }
  115. /**
  116. * 执行sql查询
  117. * @param $table 表名称
  118. * @param $where 查询条件
  119. * 字符串,请按照格式 :
  120. * 字符串 [例1:" id=1 and time>$time " ]
  121. * 字符串 [例2:array('catid=:catid AND time>=:time ',array(':catid'=>10,':time'=>'2012-02-10')) ]
  122. * 数组时 [例: array('name'=>'lanmps','password'=>'123456')]
  123. * @param $fields需要查询的字段值[例`name`,`gender`,`birthday`]
  124. * @param $limit 返回结果范围[例:10或10,10 默认为空]
  125. * @param $order 排序方式 [默认按数据库默认方式排序]
  126. * @param $group 分组方式 [默认为空]
  127. * @return array 查询结果集数组
  128. */
  129. public static function select($table,$where = '', $fields = '*', $limit = '', $order = '', $group = '') {
  130. $db=self::cdb();
  131. $db->setTableName($table);
  132. return $db->select($where , $fields , $limit, $order , $group);
  133. }
  134. /**
  135. * 获取单条记录查询
  136. * @param $table 表名称
  137. * @param array $where查询条件语句
  138. * 字符串,请按照格式 :
  139. * 字符串 [例2:array('catid=:catid AND time>=:time ',array(':catid'=>10,':time'=>'2012-02-10')) ]
  140. * 数组时 [例: array('name'=>'lanmps','password'=>'123456')]
  141. * @param string $fields 需要查询的字段值[例`name`,`gender`,`birthday`]
  142. * @param string $order 排序方式 [默认按数据库默认方式排序]
  143. * @param string $group 分组方式 [默认为空]
  144. * @return array/null数据查询结果集,如果不存在,则返回空
  145. */
  146. public static function getOne($table,$where,$fields = '*', $order = '', $group = '') {
  147. $db=self::cdb();
  148. $db->setTableName($table);
  149. return $db->get_one($where , $fields,$order, $group);
  150. }
  151. /**
  152. * 查询多条数据并分页
  153. * @param $table 表名称
  154. * @param $where 查询条件
  155. * 字符串,请按照格式 :
  156. * 字符串 [例1:" id=1 and time>$time " ]
  157. * 字符串 [例2:array('catid=:catid AND time>=:time ',array(':catid'=>10,':time'=>'2012-02-10')) ]
  158. * 数组时 [例: array('name'=>'lanmps','password'=>'123456')]
  159. * @param $fields字段 *,id
  160. * @param $order 排序 id desc ,orderlist asc
  161. * @param $page 页码 1
  162. * @param $pagesize 每页条数
  163. * @return array('data'=>数据,'count'=>记录总数)
  164. */
  165. public static function listInfo($table,$where = '',$fields='*', $order = '', $page = 1, $pagesize = 20) {
  166. $db=self::cdb();
  167. $db->setTableName($table);
  168. $d=$db->listinfo($where,$fields, $order, $page, $pagesize);
  169. return array('data'=>$d,'count'=>self::$db->number);
  170. }
  171. /**第一个参数值
  172. * @param $sql
  173. * @return mixed
  174. */
  175. public static function resultFirst($sql){
  176. $db=self::cdb();
  177. return $db->resultFirst($sql);
  178. }
  179. }
复制代码

调用方法:

DB::insert('test',array('name'=>'test'));