>  기사  >  백엔드 개발  >  mysql 데이터베이스 운영을 위해 자체 작성한 PHP 클래스 공유

mysql 데이터베이스 운영을 위해 자체 작성한 PHP 클래스 공유

WBOY
WBOY원래의
2016-07-25 08:48:56900검색
제가 직접 작성한 클래스입니다.
몇 가지 사용 방법:
//데이터베이스 객체 선언
$Conn = new Mysql;
//데이터베이스 매개변수 로드
$Conn ->매개변수(데이터베이스 서버, 데이터베이스 사용자 이름, 데이터베이스 비밀번호, 데이터베이스 이름, 데이터베이스 인코딩, 데이터베이스 테이블 접두사[비워둘 수 있음]);

위 코드는 이미 이 클래스 파일을 로드하고 초기화했습니다. 일부 데이터베이스 연결 매개변수!
다음은 몇 가지 기본 메소드 함수입니다.
1. $Conn -> Table()
데이터 테이블을 선택하고, 매개변수는 데이터 테이블의 이름입니다.
2. > Field();
선택된 필드 이름은 쉼표로 구분됩니다. 이 메소드가 호출되지 않으면 모두 반환됩니다.
3. $Conn -> Where()> Sql Where 하위 명령문, 필터 조건에 따라
4. $Conn -> Order();
Sql sort
5. $Conn -> Page(int);
이 메서드는 양의 정수입니다. 호출하면 해당 레코드가 페이지에 표시됩니다
6. $Conn -> Select(Boolean 값);
쿼리를 실행하고 쿼리 결과가 있으면 2차원 배열입니다. 매개변수가 없으면 false를 반환합니다. 생략하면 기본값은 True이고 반환된 배열에는 숫자 요소
7, $Conn -> Del();
레코드 삭제
8이 포함됩니다. , $Conn -> Edit(array());
레코드 수정, 매개변수는 1차원 배열, 배열 키는 필드 이름, 배열 값은 필드 값
9입니다. > Into(array());
레코드를 추가합니다. 매개변수는 1차원 배열이고, 배열 키는 필드 이름이고, 배열 값은 필드 값입니다.

위 메소드는 계속해서 호출될 수 있습니다. 예:

$Rult = $Conn -> Table('user') -> Select() //쿼리는 다음의 모든 레코드를 반환합니다. the user table
$Rult = $Conn -> Table('user') -> Page(20) -> Select();//쿼리는 사용자 테이블의 모든 레코드를 반환하고 이를 페이지, 20개의 레코드로 표시합니다. 페이지당;

메소드 호출이나 트릭도 많이 있는데, 나중에 시간이 나면 자세히 설명하겠습니다!
  1. /*
  2. 데이터베이스 작업 클래스
  3. 작업 방법: 객체 지향
  4. 제작 시기: 2013-3-10
  5. 현재 버전: BqhMysql(mysqli)1.0.1
  6. 소프트웨어 작성자: Sad Song
  7. 연락처 QQ: 36975
  8. 연락처 번호: 18907975647
  9. 이메일: admin@q128.com
  10. 연락처 주소 : 장시성 간저우시 스청현 샤오송진
  11. 우편번호: 342706
  12. */
  13. class Mysql{
  14. private $LocalHost = 'localhost';
  15. private $LoaclUser = 'root';
  16. private $LocalPass = '123456';
  17. private $LocalBase = 'jiangxibaiyi';
  18. private $LocalCode = 'UTF8';
  19. private $PreFix;
  20. private $ Conn ;
  21. private $Start = 0;
  22. private $Error = false; //데이터베이스 연결 상태, false는 연결되지 않았거나 연결이 비정상임을 의미합니다.
  23. public $Err = true; 🎜>
  24. private $Table;
  25. private $Field = '*';
  26. private $Where = '';
  27. private $Order = '';
  28. private $PageSize = 0; //페이지 표시->페이지당 항목 수, 0은 페이징 표시 없음을 의미합니다
  29. private $PageCount = 1; //페이지 표시->총 항목 수
  30. private $PageNum = 1; //페이지 표시 ->전체 페이지 수
  31. private $PageNo = 1; //페이지 표시 ->현재 페이지는 무엇인가요
  32. private $PageKey = '페이지'; 매개변수 키
  33. private $PageStart = 0; //페이지 표시-> 현재 반환되는 항목
  34. private $Select;
  35. private $Rest;
  36. private $Result = false;/ /ResultSet
  37. public $FormArray = array();
  38. public $Instr_ID = 0;
  39. private $j = 0;
  40. 공용 함수 매개변수($Loca, $Root, $Pass, $Base, $Code, $PreFix = ''){
  41. $this->LoaclUser = $Root;
  42. $this-> LocalBase = $Base;
  43. $this->LocalCode = $Code;
  44. $this->LocalHost = $Loca;
  45. $this->LocalPass = $Pass;
  46. $this- >PreFix = $PreFix ;
  47. return $this;
  48. }
  49. 개인 함수 Connection( $Sql ){
  50. !function_exists(mysqli_connect) ? die('쿼리 실패, mysqli 확장을 로드할 수 없습니다.' ) : null;
  51. $this->Conn = @new mysqli( $this->LocalHost, $this->LoaclUser, $this->LocalPass, $this->LocalBase);
  52. $this->Error = mysqli_connect_errno() == 0 ? true : false;
  53. !$this->Error ? die('데이터베이스 연결 오류입니다. 데이터베이스 연결 매개변수를 확인하세요.') : null;
  54. $this->Conn-> ;query('SET NAMES ' . $this->LocalCode);
  55. $this->Rest = $this->Conn->query($Sql);
  56. $this->Err = mysqli_error($this->Conn);
  57. $this->Instr_ID = mysqli_insert_id($this->Conn);
  58. $this->Rest-> ;free_result;
  59. $this ->Conn->close;
  60. $this -> FormArray = '';
  61. return $this;
  62. }
  63. 공개 함수 null (){
  64. $this ->PageSize = 0;
  65. //$this->PageCount = 1;
  66. $this->PageStart = 1;
  67. $this->Field = ' * ';
  68. $this->Select = '';
  69. unset($this->Table, $this->Where,$this->Order, $this->Result );
  70. }
  71. 공개 함수 Table( $TableName ) {//데이터 테이블
  72. $this -> null();
  73. $this->Table = '`' . $this->PreFix . $ TableName . '`';
  74. return $this;
  75. }
  76. 공용 함수 Field( $Array = '*' ) {//데이터 필드
  77. !empty( $this-> Field ) ? $this->Field = '' : null;
  78. $Array =explore(',', $Array);
  79. foreach( $Array를 $field로) {
  80. $this-> ;Field .= !$this->Start ? '`' . '`' : ', `' . $this-> ;Start ;
  81. }
  82. $this->Start = 0;
  83. return $this;
  84. }
  85. 공개 함수 Where( $Where ) {//Condition
  86. $this->Where = ' where ' .$Where;
  87. return $this
  88. }
  89. 공개 함수 Order( $Order ) {//Order
  90. $this-> Order = 'order by' . $ Order;
  91. return $this;
  92. }
  93. 공개 함수 pk( $key ) {//Paging url 매개변수 키
  94. $this->PageKey = $key;
  95. return $this;
  96. }
  97. 공개 함수 Page( $PageSize ) {//Paging
  98. $this->PageSize = $PageSize;
  99. $this ->PageNo = $this- >get( $this->PageKey );
  100. $this->PageNo = 비어 있음( $this->PageNo ) || !isset( $this->PageNo ) || !is_numeric( $this ->PageNo ) || $this->PageNo < 1 ? 1 : $this->PageNo;
  101. return $this;
  102. 공개 함수 포스트( $Key, $Filter = true ){
  103. return $Filter ? Strip_tags($_POST[$Key]) : $_POST[$Key];
  104. }
  105. 공개 함수 get( $Key, $Filter = true ){
  106. return $Filter ?strip_tags($_GET[$Key]) : $_GET[$Key];
  107. }
  108. 공개 함수 Sel(){
  109. $this->Select = 'Select' . $this->필드. ' 에서 ' . $this->테이블 . $this->어디에서 . $this->Order;
  110. $this->Connection( $this->Select );
  111. if ( $this->Rest->num_rows ) {
  112. while ( $Rs = $this->Rest->fetch_assoc() ) {
  113. $this->Result[] = $Rs;
  114. }
  115. }
  116. $DataBase = $this->Result;
  117. 빈 값($DataBase)을 반환합니까? false : $DataBase;
  118. }
  119. 공개 함수 쿼리( $Sql = '', $Type = 'not', $biao = false ) {
  120. $this->Select = $Sql ;
  121. $this->Connection( $this->Select );
  122. if ( $this->Rest->num_rows ) {
  123. if ( !$biao ) {
  124. while ( $Rs = $this->Rest->fetch_array() ) {
  125. $this->Result[] = !preg_match('/^d $/i', $Type) ? $Rs : $Rs[ $Type ];
  126. }
  127. } else {
  128. while ( $Rs = $this->Rest->fetch_assoc() ) {
  129. $this-> Result[] = $Rs;
  130. }
  131. }
  132. }
  133. $DataBase = $this->Result;
  134. return empty($DataBase) ? false : $DataBase;
  135. }
  136. 공개 함수 실행( $Sql = '' ){
  137. $this->Connection( $Sql );
  138. return $this- >Rest;
  139. }
  140. 공개 함수가 있습니다( $T = '', $F = '', $W = ''){
  141. if( 비어 있음( $F ) ) { 0을 반환합니다. }
  142. $cmd = 비어 있음( $W ) ? '' 에서 `baiyinum`으로 sum(' . $F . ') 를 선택합니다. $this->PreFix . $T .'`' : ' `' 에서 `baiyinum`으로 sum(' . $F . ')를 선택합니다. $this->PreFix . $T .'` 어디에서 ' . $W;
  143. $this->Connection( $cmd );
  144. unset( $T, $F, $W, $cmd );
  145. $Rel = $this->Rest-> fetch_array();
  146. return round( $Rel['baiyinum'], 2 );
  147. }
  148. 공개 함수 ExistsTo( $Bili = 10000, $T = '', $ F = '', $W = ''){
  149. if ( 비어 있음( $F ) ) { return 0; }
  150. $cmd = 비어 있음( $W ) ? '' 에서 `baiyinum`으로 sum(' . $F . ') 를 선택합니다. $this->PreFix . $T .'`' : ' `' 에서 `baiyinum`으로 sum(' . $F . ')를 선택합니다. $this->PreFix . $T .'` 어디에서 ' . $W;
  151. $this->Connection( $cmd );
  152. unset( $T, $F, $W, $cmd );
  153. $Rel = $this->Rest-> fetch_array();
  154. return round( $Rel['baiyinum'] * $Bili );
  155. }
  156. 공용 함수 Select( $Type = true, $ListNum = 1 ){ //返回记录(数组shape式, 返回条数)
  157. $this->Select = '선택' . $this->필드. ' 에서 ' . $this->테이블 . $this->어디에서 . $this->Order;
  158. if ( is_numeric( $ListNum ) ) {
  159. if ( $this->PageSize > 0 ) {
  160. $this->Connection( $this-> );//执行查询
  161. $this->PageCount = $this->Rest->num_rows;//取得记录总数
  162. $this->PageNum = ceil($this-> PageCount / $this->PageSize); //总共多少页
  163. $this->PageNo = $this->PageNo > $this->페이지번호 ? $this->PageNum : $this->PageNo;
  164. $this->PageStart = ( $this->PageNo - 1 ) * $this->PageSize; //当前从第几条开始返回
  165. $this->Select .= 'limit' . $this->PageStart . ', ' .$this->PageSize; //중요한 새로운构造sql语句
  166. } else {
  167. $this->Select .= 'limit' . $목록번호; // 새로운 버전의 sql语句
  168. }
  169. } else {
  170. $this->Select .= 'limit 1'; //중요 새로운构造sql语句
  171. }
  172. //echo $this->Select;
  173. $this->Connection( $this->Select );//再次执行查询
  174. if ( $this->Rest->num_rows ) {//如果记录存재
  175. if ( $Type ) {
  176. while ( $Rs = $this->Rest->fetch_array() ) {
  177. $this->Result[] = $Rs;
  178. }
  179. }else{
  180. while ( $Rs = $this->Rest->fetch_assoc() ) {
  181. $ this->Result[] = $Rs;
  182. }
  183. }
  184. }
  185. if ( ( $ListNum == 1 or !is_numeric( $ListNum ) ) && !$this->PageSize ) { $this->Result = $this->Result[0]; }
  186. $DataBase = $this->Result;
  187. return empty($DataBase) ? false : $DataBase;
  188. }
  189. public function Num() { //返回记录总数
  190. $this->Select = 'Select ' . $this->필드. ' 에서 ' . $this->테이블 . $this->어디에서 . $this->Order;
  191. $this->Connection( $this->Select );//执行查询
  192. return $this->Rest->num_rows;//取得记录总数
  193. }
  194. public function PageNav($NumNav = false ) { //分页
  195. $Action = $this -> get('action');
  196. !empty( $Action ) or $Action = 'index';
  197. $Module = $this -> get('module');
  198. !empty( $Module ) or $Module = 'index';
  199. $NavUrl = '/' . $Module . '/' . $Action . '/' . $this -> PageKey .'/';
  200. $NaIndex = '/' . $Module . '/' . $Action;
  201. $PageHtml = "\n
    ";
  202. $PageHtml .= '' . $this->PageCount . '条记录 ' . $this->PageNo . '/' . $this->PageNum . '页 ';
  203. $this->PageNo <= 1 or $PageHtml .= "首页\nPageNo - 1) . "\">上一页\n";
  204. if ( $NumNav ) { $PageHtml .= $this->NumPage($NavUrl); }
  205. $this->PageNo >= $this->PageNum or $PageHtml .= "PageNo + 1) . "\">下一页\nPageNum . "\">尾页\n";
  206. $PageHtml .= "
\n";
  • return $PageHtml;
  • }
  • private function NumPage( $Can = '' ) { //数字分页
  • $NumHtml = '';
  • $First = 1;
  • $Last = $this->PageNum;
  • if ( $this->PageNum > 5 ) {
  • if ( $this->PageNo < $this->PageNum ) {
  • $First = $this->PageNo - 2;
  • $Last = $this->PageNo + 2;
  • }else{
  • $First = $this->PageNo - 4;
  • $Last = $this->PageNum;
  • }
  • }
  • if ( $First < 1 ) { $First = 1; $Last = $First + 4;}
  • if ( $Last > $this->PageNum ) { $First = $this->PageNum - 4; $Last = $this->PageNum;}
  • for( $i = $First; $i <= $Last; $i++) {
  • $NumHtml .= $this->PageNo != $i ? "\n\t" . '' . $i . '' . "\n\t" : "\n\t" .'' . $i . '' . "\n\t";
  • }
  • unset($Can, $First, $i, $Last);
  • return $NumHtml;
  • }
  • public function UserPage($NumNav = false, $PageName = 'index', $Mulu = 'user' ) { //会员中心分页
  • $NavUrl = '/' . $Mulu . '/' . $PageName . '/' . $this->PageKey . '/';
  • $PageHtml = "\n
    ";
  • $PageHtml .= '' . $this->PageCount . '条记录 ' . $this->PageNo . '/' . $this->PageNum . '页 ';
  • $this->PageNo <= 1 or $PageHtml .= "首页\nPageNo - 1) . "\">上一页\n";
  • if ( $NumNav ) { $PageHtml .= $this->NumPage($NavUrl); }
  • $this->PageNo >= $this->PageNum or $PageHtml .= "PageNo + 1) . "\">下一页\nPageNum . "\">尾页\n";
  • $PageHtml .= "
  • n";
  • return $PageHtml;
  • }
  • // 양식 처리 시작
  • // 양식 판단 시 제출
  • 공용 함수 FormIs( $Keys = 'mm' ) {
  • return $_POST[ $Keys ] == 1 ? true : false;
  • }
  • //post를 통해 데이터 가져오기
  • 공개 함수 _post( $Keys = '', $TiHuan = '') {
  • $Values ​​​​= Strip_tags( $_POST[ $Keys ] );
  • $this->FormArray[$Keys] = 비어 있음( $Values ​​​​) ? $TiHuan : $ Values;
  • return empty( $Values ​​​​) ? $TiHuan : $Values;
  • }
  • //데이터를 가져오는 메서드 가져오기
  • public function _get( $Keys = '', $TiHuan = '') {
  • $Values ​​​​= Strip_tags( $_GET[ $Keys ] );
  • 빈 값 반환( $Values ​​​​) $TiHuan : $Values;
  • }
  • //Is가 숫자이고 0보다 작지 않은지 판단
  • public function IsNum( $Num = 0, $Mesg = '매개변수는 숫자여야 합니다.' ) {
  • if ( is_numeric( $Num ) && !empty( $Num ) && $Num > ;= 0 ) {
  • return $Num;
  • }else{
  • die( $Mesg );
  • }
  • }
  • // 숫자인지 확인하고 0보다 작지 않은지 확인하여 True/False를 반환합니다.
  • public function NumBer( $Num = 0) {
  • return is_numeric( $Num ) && !empty( $Num ) && $Num >= 0 ? true : false;
  • }
  • //해당 데이터가 존재하는 것으로 감지
  • public function IsData($Types = true, $memg = '데이터가 이미 있음 존재' ){
  • $this->Connection('select ' . $this->Field . ' from ' . $this->Table . $this->Where);
  • if ( $ 유형 ){
  • $this->Rest->num_rows > 0 ? die( $memg ) : null;
  • } else {
  • return $this->Rest->num_rows;
  • }
  • }
  • //쓰기 데이터베이스 레코드 입력
  • 공용 함수 into( $Mesg = '' ){
  • !is_array( $this->FormArray ) ? die( $Mesg ) : null;
  • $Sql = '' . $this->Table . ' (`';
  • $I = 0;
  • foreach ( $this->FormArray $Key => $Val ){
  • $Duan .= !$ I ? $Key . '`' : ', $Key . ){
  • $Vals .= !$I ? $Val : ', ' . $Val;
  • }else{
  • $Vals .= !$I ? : ', '' . $Val . ''';
  • }
  • $I ;
  • }
  • $Sql .= $Duan . ') 값 ';
  • //@file_put_contents('1.sql', $Sql , FILE_APPEND);
  • $this->Connection( $Sql );
  • return !empty( $ this->Err ) ? false : true;
  • }
  • //배열 형식으로 데이터 쓰기
  • public function MsgBox( $Table = '', $Filed = array() ) {
  • $this -> Table($Table);
  • foreach( $Filed as $Key => $Val ) {
  • $this -> FormArray[ $Key ] = $Val; }
  • return $this -> Into('데이터를 얻지 못했습니다');
  • }
  • //데이터베이스 레코드 수정
  • public function Edit( $Array = array() ) {
  • if ( 비어 있음( $Array ) ) { $Array = $this -> FormArray }
  • if ( !is_array( $Array ) || 비어 있음( $Array ) ) {
  • return false;
  • } else {
  • $Sql = '업데이트' . $this -> 테이블 . ' 설정 ';
  • $I = 0;
  • $Huan = 배열( '-' => '[지안]', '' => '[쳉]', '/' => > $Zhan = array('[jian]' => '-', '[jia ]' => ' ', '[cheng]' => '*', '[chu]' => ' /');
  • foreach ( $Array as $Files => $ Val ) {
  • $Val = !is_numeric( $Val ) && !preg_match('/`w `s*( |- |*|/)/i', $Val) ? ''' . $Val . ' '' : $Val;
  • foreach ( $Huan as $key => $val ){
  • $Val = str_replace($key, $val, $Val);
  • }
  • $duan = !$I ? '`' . '` = ': ', $Files . ;
  • $Sub .= $duan . $Val;
  • $I ;
  • }
  • $Sql .= $Sub . $this -> 팬 => $Hui ) {
  • $Sql = str_replace($Fan, $Hui , $Sql);
  • }
  • //echo $Sql; die;
  • $this -> 연결( $Sql );
  • 설정 해제( $Array, $duan , $Fan, $Files, $Huan, $Hui, $I, $key, $Sql, $Sub, $Val, $ Zhan, $val );
  • return !empty( $this -> Err ) ? false : true;
  • }
  • }
  • //데이터베이스 레코드 삭제
  • 공개 함수 del (){
  • $Sql = '에서 삭제 . $this->Where;
  • $this->Connection( $Sql );
  • unset($Sql) ;
  • return !empty( $this->Err ) ? false : true;
  • }
  • //양식 처리 종료
  • //페이지 이동
  • 공개 함수 Msg( $Text = '작업 성공' ) {
  • echo '';
  • echo '