首頁  >  文章  >  後端開發  >  PDO資料庫操作類

PDO資料庫操作類

WBOY
WBOY原創
2016-07-25 08:44:29961瀏覽
  1. class HRDB{
  2. protected $pdo;
  3. protected $res;
  4. protected $config;
  5. /*建構函數/
  6. function __construct($config){
  7. $this->Config = $config;
  8. $this->connect();
  9. }
  10. /*資料庫連線*/
  11. public function connect(){
  12. $this->pdo = new PDO($this->Config['dsn'], $this->Config['name'], $this->Config[' password']);
  13. $this->pdo->query('set names utf8;');
  14. //把結果序列化成stdClass
  15. //$this->pdo->setAttribute(PDO ::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
  16. //自己寫程式碼擷取Exception
  17. $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  18. /*資料庫關閉*/
  19. public function close(){
  20. $this->pdo = null;
  21. }
  22. public function query($sql){
  23. $res = $this->pdo->query($sql);
  24. if($res){
  25. $this->res = $res;
  26. }
  27. }
  28. public function exec($sql){
  29. $res = $this->pdo->exec($sql);
  30. if($res){
  31. $this->res = $res;
  32. }
  33. }
  34. public function fetchAll(){
  35. return $this->res->fetchAll();
  36. }
  37. public function fetch(){
  38. return $this->res ->fetch();
  39. }
  40. public function fetchColumn(){
  41. return $this->res->fetchColumn();
  42. }
  43. public function lastInsertId(){
  44. }
  45. public function lastInsertId(){
  46. return $this->res->lastInsertId();
  47. }
  48. /**
  49. * 參數說明
  50. * int $debug 是否開啟調試,開啟則輸出sql語句
  51. * 0 不開啟
  52. * 1 開啟
  53. * 2 開啟並終止程式
  54. * int $ mode 傳回型別
  55. * 0 傳回多筆記錄
  56. * 1 傳回單一記錄
  57. * 2 傳回行數
  58. * string/array $table 資料庫表,兩種傳值模式
  59. * 普通模式:
  60. * 'tb_member, tb_money'
  61. * 數組模式:
  62. * array('tb_member', 'tb_money')
  63. * string/array $fields 需要查詢的資料庫字段,允許為空,預設為找出全部,兩種傳值模式
  64. * 普通模式:
  65. * 'username, password'
  66. * 陣列模式:
  67. * array('username', 'password')
  68. * string/array $sqlwhere 查詢條件,允許為空,兩種傳值模式
  69. * 普通模式:
  70. * 'and type = 1 and username like "%os%"'
  71. * 陣列模式:
  72. * array('type = 1', 'username like "%os%"')
  73. * string $orderby 排序,預設為id倒序
  74. */
  75. public function select($debug, $mode, $table, $fields=" *", $sqlwhere="", $orderby="tbid desc"){
  76. //參數處理
  77. if(is_array($table)){
  78. $table = implode(', ', $ table);
  79. }
  80. if(is_array($fields)){
  81. $fields = implode(', ', $fields);
  82. }
  83. if(is_array($sqlwhere)) {
  84. $sqlwhere = ' and '.implode(' and ', $sqlwhere);
  85. }
  86. //資料庫運算
  87. if($debug === 0){
  88. if( $mode === 2){
  89. $this->query("select count(tbid) from $table where 1=1 $sqlwhere");
  90. $return = $this->fetchColumn();
  91. }else if($mode === 1){
  92. $this->query("select $fields from $table where 1=1 $sqlwhere order by $orderby");
  93. $return = $ this->fetch();
  94. }else{
  95. $this->query("select $fields from $table where 1=1 $sqlwhere order by $orderby");
  96. $return = $this ->fetchAll();
  97. }
  98. return $return;
  99. }else{
  100. if($mode === 2){
  101. echo "select count(tbid) from $table where 1=1 $sqlwhere";
  102. }else if($mode === 1){
  103. echo "select $fields from $table where 1=1 $sqlwhere order by $orderby";
  104. }
  105. else{
  106. echo "從$table 選$fields,其中1=1 $sqlwhere order by $orderby";
  107. }
  108. if($debug === 2){
  109. exit;
  110. }
  111. }
  112. }
  113. /**
  114. * 參數說明
  115. * int $debug 是否開啟調試,開啟則輸出sql語句
  116. * 0 不開啟
  117. * 1 開啟
  118. * 2 開啟並終止程式
  119. * int $ mode 回傳類型
  120. * 0 無回傳訊息
  121. * 1 傳回執行項目數
  122. * 2 傳回最後一次插入記錄的id
  123. * string/array $table 資料庫表,兩種傳值模式
  124. * 普通模式:
  125. * 'tb_member, tb_money'
  126. * 陣列模式:
  127. * array('tb_member', 'tb_money')
  128. * string/array $set 需要插入的字段及內容,兩種傳值模式
  129. * 普通模式:
  130. * 'username = "test", type = 1, dt = now()'
  131. * 陣列模式:
  132. * array('username = "test"', 'type = 1', 'dt = now()')
  133. */
  134. 公用函數insert($debug, $mode, $table, $set){
  135. / /參數處理
  136. if(is_array($table)){
  137. $table = implode(', ', $table);
  138. }
  139. if(is_array($set)){
  140. $set = implode(', ', $set);
  141. }
  142. // 資料庫操作
  143. if($debug === 0){
  144. if($mode === 2 ){
  145. $this->query("插入$table set $set");
  146. $return = $this->lastInsertId();
  147. }else if($mode === 1) {
  148. $this->exec("插入$table set $set");
  149. $return = $this->res;
  150. }else{
  151. $this->query ("插入$表集$set");
  152. $return = NULL;
  153. }
  154. return $return;
  155. }else{
  156. echo "插入$表集$set" ;
  157. if($ debug === 2){
  158. exit;
  159. }
  160. }
  161. }
  162. /**
  163. * 參數說明
  164. * int $debug 是否開啟調試,開啟則輸出sql語句
  165. * 0 不開啟
  166. * 1 開啟
  167. * 2 開啟並終止程式
  168. * int $ mode 回傳類型
  169. * 0 無回傳訊息
  170. * 1 傳回執行條目數
  171. * string $table 資料庫表,兩種傳值模式
  172. * 普通模式:
  173. * 'tb_member, tb_money '
  174. * 陣列模式:
  175. * array('tb_member', 'tb_money')
  176. * string/array $set 需要更新的欄位及內容,兩種傳值模式
  177. * 普通模式:
  178. * 'username = "test", type = 1, dt = now()'
  179. * 陣列模式:
  180. * array('username = "test"', 'type = 1', 'dt = now()')
  181. * string/array $sqlwhere 修改條件,允許為空,兩種傳值模式
  182. * 普通模式:
  183. * 'and type = 1 and username like "%os% "'
  184. * 陣列模式:
  185. * array('type = 1', 'username like "%os%"')
  186. */
  187. 公用函數update($debug, $mode , $table, $set, $sqlwhere=""){
  188. // 參數處理
  189. if(is_array($table)){
  190. $table = implode(', ', $table);
  191. }
  192. if(is_array($set)){
  193. $set = implode(', ', $set);
  194. }
  195. if(is_array($ sqlwhere)){
  196. $sqlwhere = ' and '.implode(' and ', $sqlwhere);
  197. }
  198. // 資料庫運算
  199. if($debug === 0){
  200. if($mode == = 1){
  201. $this->exec("update $table set $set where 1=1 $sqlwhere");
  202. $return = $this->res;
  203. }else{
  204. $this->query("update $table set $set where 1=1 $sqlwhere");
  205. $return = NULL;
  206. }
  207. return $return ;
  208. }else{
  209. echo "update $table set $set where 1=1 $sqlwhere";
  210. if($debug === 2){
  211. exit;
  212. }
  213. }
  214. }
  215. /**
  216. * 參數說明
  217. * int $debug 是否開啟調試,開啟則輸出sql語句
  218. * 0 不開啟
  219. * 1 開啟
  220. * 2 開啟並終止程式
  221. * int $ mode 回傳類型
  222. * 0 無回傳訊息
  223. * 1 傳回執行項目數
  224. * string $table 資料庫表
  225. * string/array $sqlwhere 刪除條件,允許為空,兩種傳值模式
  226. * 普通模式:
  227. * 'and type = 1 and username like "%os%"'
  228. * 陣列模式:
  229. * array('type = 1', 'username like "%os %"')
  230. */
  231. public function delete($debug, $mode, $table, $sqlwhere=""){
  232. //參數處理
  233. if( is_array($sqlwhere)){
  234. $sqlwhere = ' and '.implode(' and ', $sqlwhere);
  235. }
  236. // 資料庫運算
  237. if($debug === 0) {
  238. if($mode === 1){
  239. $this->exec("從$table where 1=1 $sqlwhere 刪除");
  240. $return = $this->res ;
  241. }else{
  242. $this->query("從$table where 1=1 $sqlwhere 刪除");
  243. $return = NULL;
  244. }
  245. return $return;
  246. }else{
  247. echo "從$table where 1=1 $sqlwhere 刪除";
  248. if($debug === 2){
  249. exit;
  250. }
  251. }
  252. }
  253. }
複製程式碼

PDO


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn