> 백엔드 개발 > PHP 튜토리얼 > PDO 데이터베이스 작업 클래스

PDO 데이터베이스 작업 클래스

WBOY
풀어 주다: 2016-07-25 08:44:29
원래의
996명이 탐색했습니다.
  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. 공용 함수 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. //예외를 포착하는 코드를 직접 작성하세요
  17. $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO ::ERRMODE_EXCEPTION);
  18. }
  19. /*데이터베이스 닫기*/
  20. 공용 함수 close(){
  21. $this->pdo = null;
  22. }
  23. 공개 함수 쿼리($sql){
  24. $res = $this->pdo->query($sql);
  25. if($res){
  26. $this->res = $res;
  27. }
  28. }
  29. 공개 함수 exec($sql){
  30. $res = $this->pdo->exec($sql);
  31. if($ res ){
  32. $this->res = $res;
  33. }
  34. }
  35. 공개 함수 fetchAll(){
  36. return $this->res->fetchAll();
  37. }
  38. 공용 함수 fetch(){
  39. return $this->res->fetch();
  40. }
  41. public function fetchColumn(){
  42. return $this- > ;res->fetchColumn();
  43. }
  44. 공개 함수 lastInsertId(){
  45. return $this->res->lastInsertId();
  46. }
  47. / **
  48. * 매개변수 설명
  49. * int $debug 디버깅 활성화 여부, 활성화하면 sql 문이 출력됩니다.
  50. * 0 비활성화
  51. * 1 활성화
  52. * 2 디버깅 활성화 및 종료 프로그램
  53. * int $ 모드 반환 유형
  54. * 0은 여러 레코드를 반환합니다.
  55. * 1은 단일 레코드를 반환합니다.
  56. * 2 행 수를 반환합니다.
  57. * 문자열/배열 $table 데이터베이스 테이블, two 값 전달 모드
  58. * 일반 모드:
  59. * 'tb_member, tb_money'
  60. * 배열 모드:
  61. * array('tb_member', 'tb_money')
  62. * 문자열/배열 $fields 쿼리할 데이터베이스 필드, 비워둘 수 있음, 기본값은 모두 검색, 두 가지 값 전달 모드
  63. * 일반 모드:
  64. * '사용자 이름, 비밀번호'
  65. * 배열 모드:
  66. * array('username', 'password')
  67. * 문자열/배열 $sqlwhere 쿼리 조건, 비어 있음 허용, 두 가지 값 전달 모드
  68. * 일반 모드:
  69. * 'and type = 1 및 사용자 이름 like " %os%"'
  70. * 배열 모드 :
  71. * array('type = 1', 'username like "%os%"')
  72. * string $orderby 정렬, 기본값은 id 역순
  73. */
  74. 공개 함수 선택($debug, $mode, $table, $fields="*", $sqlwhere="", $orderby="tbid desc"){
  75. / / 매개변수 처리
  76. if(is_array($table)){
  77. $table = implode(', ', $table);
  78. }
  79. if(is_array($fields)){
  80. $ fields = implode(', ', $fields);
  81. }
  82. if(is_array($sqlwhere)){
  83. $sqlwhere = ' and '.implode(' and ', $sqlwhere);
  84. }
  85. //데이터베이스 작업
  86. if($debug === 0){
  87. if($mode === 2){
  88. $this->query("select count( tbid ) from $table where 1=1 $sqlwhere");
  89. $return = $this->fetchColumn();
  90. }else if($mode === 1){
  91. $this- > ;query("select $fields from $table where 1=1 $sqlwhere order by $orderby");
  92. $return = $this->fetch();
  93. }else{
  94. $this - >query("select $fields from $table where 1=1 $sqlwhere order by $orderby");
  95. $return = $this->fetchAll();
  96. }
  97. return $return ;
  98. }else{
  99. if($mode === 2){
  100. echo "$table에서 개수(tbid) 선택, 여기서 1=1 $sqlwhere";
  101. }else if($mode = == 1){
  102. echo "$table에서 $fields 선택, 여기서 1=1 $sqlwhere order by $orderby";
  103. }
  104. else{
  105. echo "1=1인 $sql에서 $orderby로 주문한 $table에서 $fields 선택";
  106. }
  107. if($debug === 2){
  108. exit;
  109. }
  110. }
  111. }
  112. /**
  113. * 매개변수 설명
  114. * int $debug 디버깅 활성화 여부, 활성화하면 sql 문이 출력됩니다.
  115. * 0 비활성화
  116. * 1 활성화
  117. * 2 디버깅 활성화 및 종료 프로그램
  118. * int $ 모드 반환 유형
  119. * 0 반환 정보 없음
  120. * 1 실행 항목 수를 반환
  121. * 2 마지막으로 삽입된 레코드의 ID를 반환
  122. * 문자열/배열 $ 테이블 데이터베이스 테이블, 두 가지 값 전달 모드
  123. * 일반 모드:
  124. * 'tb_member, tb_money'
  125. * 배열 모드:
  126. * array('tb_member', 'tb_money')
  127. * string/array $set 필드를 삽입하고 Content, 두 가지 값 전달 모드
  128. * 일반 모드:
  129. * 'username = "test", type = 1, dt = now()'
  130. * Array 모드:
  131. * array('username = "test"', 'type = 1', 'dt = now()')
  132. */
  133. 공개 함수 삽입($debug, $mode, $table, $set){
  134. / /参数处理
  135. if(is_array($table)){
  136. $table = implode(', ', $table);
  137. }
  138. if(is_array($set)){
  139. $set = implode(', ', $set);
  140. }
  141. //数据库操작
  142. if($debug === 0){
  143. if($mode === 2){
  144. $this->query("$table set $set에 삽입");
  145. $return = $this->lastInsertId();
  146. }else if($mode === 1) {
  147. $this->exec("$table set $set에 삽입");
  148. $return = $this->res;
  149. }else{
  150. $this->query ("$table set $set에 삽입");
  151. $return = NULL;
  152. }
  153. return $return;
  154. }else{
  155. echo "$table set $set에 삽입" ;
  156. if($debug === 2){
  157. 종료;
  158. }
  159. }
  160. }
  161. /**
  162. * 매개변수 설명
  163. * int $debug 디버깅 활성화 여부, 활성화하면 sql 문이 출력됩니다.
  164. * 0 비활성화
  165. * 1 활성화
  166. * 2 디버깅 활성화 및 종료 program
  167. * int $ 모드 반환 유형
  168. * 0 반환 정보 없음
  169. * 1 실행 항목 수 반환
  170. * 문자열 $table 데이터베이스 테이블, 두 가지 값 전달 모드
  171. * 일반 모드:
  172. * 'tb_member, tb_money'
  173. * 배열 모드:
  174. * array('tb_member', 'tb_money')
  175. * string/array $set 업데이트가 필요한 필드 및 내용, 값 2개 -통과 모드
  176. * 일반 모드:
  177. * 'username = "test", type = 1, dt = now()'
  178. * 배열 모드:
  179. * array('username = "test" ', 'type = 1', 'dt = now()')
  180. * 문자열/배열 $sqlwhere 조건 수정, 비어 있음, 두 가지 값 전달 모드 허용
  181. * 일반 모드:
  182. * 'and type = 1 및 사용자 이름 like "%os% "'
  183. * 배열 모드:
  184. * array('type = 1', 'username like "%os%"')
  185. */
  186. 공개 함수 update($debug, $mode, $table, $set, $sqlwhere=""){
  187. //参数处理
  188. if(is_array($table)){
  189. $table = implode(', ', $table);
  190. }
  191. if(is_array($set)){
  192. $set = implode(', ', $set);
  193. }
  194. if(is_array($ sqlwhere)){
  195. $sqlwhere = ' and '.implode(' and ', $sqlwhere);
  196. }
  197. //数据库操작
  198. if($debug === 0){
  199. if($mode === 1){
  200. $this->exec("update $table set $set where 1=1 $sqlwhere");
  201. $return = $this->res;
  202. }else{
  203. $this->query("update $table set $set where 1=1 $sqlwhere");
  204. $return = NULL;
  205. }
  206. return $return ;
  207. }else{
  208. echo "$table set $set 업데이트, 여기서 1=1 $sqlwhere";
  209. if($debug === 2){
  210. exit;
  211. }
  212. }
  213. }
  214. /**
  215. * 매개변수 설명
  216. * int $debug 디버깅 활성화 여부, 활성화하면 sql 문이 출력됩니다.
  217. * 0 비활성화
  218. * 1 활성화
  219. * 2 디버깅 활성화 및 종료 program
  220. * int $ mode return type
  221. * 0 반환 정보 없음
  222. * 1 실행 항목 개수 반환
  223. * string $table 데이터베이스 테이블
  224. * string/array $sqlwhere 삭제 조건, 허용 비어 있으려면 두 가지 값 전달 모드
  225. * 일반 모드:
  226. * 'and type = 1 및 사용자 이름은 "%os%"''
  227. * 배열 모드:
  228. * array('type = 1', '사용자 이름은 "%os %"와 같습니다')
  229. */
  230. 공용 함수 delete($debug, $mode, $table, $sqlwhere=""){
  231. //参数处理
  232. if( is_array($sqlwhere)){
  233. $sqlwhere = ' and '.implode(' and ', $sqlwhere);
  234. }
  235. //数据库操작
  236. if($debug === 0) {
  237. if($mode === 1){
  238. $this->exec("1=1 $sqlwhere인 $table에서 삭제");
  239. $return = $this->res ;
  240. }else{
  241. $this->query("1=1 $sqlwhere인 $table에서 삭제");
  242. $return = NULL;
  243. }
  244. return $return;
  245. }else{
  246. echo "1=1인 $sqlwhere에서 삭제";
  247. if($debug === 2){
  248. exit;
  249. }
  250. }
  251. }
  252. }
复代码

PDO


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿