제가 직접 작성한 클래스입니다. 몇 가지 사용 방법: //데이터베이스 객체 선언 $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개의 레코드로 표시합니다. 페이지당;
메소드 호출이나 트릭도 많이 있는데, 나중에 시간이 나면 자세히 설명하겠습니다!
- /*
- 데이터베이스 작업 클래스
- 작업 방법: 객체 지향
- 제작 시기: 2013-3-10
- 현재 버전: BqhMysql(mysqli)1.0.1
- 소프트웨어 작성자: Sad Song
- 연락처 QQ: 36975
- 연락처 번호: 18907975647
- 이메일: admin@q128.com
- 연락처 주소 : 장시성 간저우시 스청현 샤오송진
- 우편번호: 342706
- */
- class Mysql{
- private $LocalHost = 'localhost';
- private $LoaclUser = 'root';
- private $LocalPass = '123456';
- private $LocalBase = 'jiangxibaiyi';
- private $LocalCode = 'UTF8';
- private $PreFix;
- private $ Conn ;
- private $Start = 0;
- private $Error = false; //데이터베이스 연결 상태, false는 연결되지 않았거나 연결이 비정상임을 의미합니다.
- public $Err = true; 🎜>
- private $Table;
- private $Field = '*';
- private $Where = '';
- private $Order = '';
-
- private $PageSize = 0; //페이지 표시->페이지당 항목 수, 0은 페이징 표시 없음을 의미합니다
- private $PageCount = 1; //페이지 표시->총 항목 수
- private $PageNum = 1; //페이지 표시 ->전체 페이지 수
- private $PageNo = 1; //페이지 표시 ->현재 페이지는 무엇인가요
- private $PageKey = '페이지'; 매개변수 키
- private $PageStart = 0; //페이지 표시-> 현재 반환되는 항목
-
-
- private $Select;
- private $Rest;
-
- private $Result = false;/ /ResultSet
-
- public $FormArray = array();
-
- public $Instr_ID = 0;
- private $j = 0;
-
-
- 공용 함수 매개변수($Loca, $Root, $Pass, $Base, $Code, $PreFix = ''){
- $this->LoaclUser = $Root;
- $this-> LocalBase = $Base;
- $this->LocalCode = $Code;
- $this->LocalHost = $Loca;
- $this->LocalPass = $Pass;
- $this- >PreFix = $PreFix ;
- return $this;
- }
- 개인 함수 Connection( $Sql ){
- !function_exists(mysqli_connect) ? die('쿼리 실패, mysqli 확장을 로드할 수 없습니다.' ) : null;
- $this->Conn = @new mysqli( $this->LocalHost, $this->LoaclUser, $this->LocalPass, $this->LocalBase);
- $this->Error = mysqli_connect_errno() == 0 ? true : false;
- !$this->Error ? die('데이터베이스 연결 오류입니다. 데이터베이스 연결 매개변수를 확인하세요.') : null;
- $this->Conn-> ;query('SET NAMES ' . $this->LocalCode);
- $this->Rest = $this->Conn->query($Sql);
- $this->Err = mysqli_error($this->Conn);
- $this->Instr_ID = mysqli_insert_id($this->Conn);
- $this->Rest-> ;free_result;
- $this ->Conn->close;
- $this -> FormArray = '';
- return $this;
- }
-
- 공개 함수 null (){
- $this ->PageSize = 0;
- //$this->PageCount = 1;
- $this->PageStart = 1;
- $this->Field = ' * ';
- $this->Select = '';
- unset($this->Table, $this->Where,$this->Order, $this->Result );
- }
-
- 공개 함수 Table( $TableName ) {//데이터 테이블
- $this -> null();
- $this->Table = '`' . $this->PreFix . $ TableName . '`';
- return $this;
- }
-
- 공용 함수 Field( $Array = '*' ) {//데이터 필드
- !empty( $this-> Field ) ? $this->Field = '' : null;
- $Array =explore(',', $Array);
- foreach( $Array를 $field로) {
- $this-> ;Field .= !$this->Start ? '`' . '`' : ', `' . $this-> ;Start ;
- }
- $this->Start = 0;
- return $this;
- }
-
- 공개 함수 Where( $Where ) {//Condition
- $this->Where = ' where ' .$Where;
- return $this
- }
-
- 공개 함수 Order( $Order ) {//Order
- $this-> Order = 'order by' . $ Order;
- return $this;
- }
-
- 공개 함수 pk( $key ) {//Paging url 매개변수 키
- $this->PageKey = $key;
- return $this;
- }
-
- 공개 함수 Page( $PageSize ) {//Paging
- $this->PageSize = $PageSize;
- $this ->PageNo = $this- >get( $this->PageKey );
- $this->PageNo = 비어 있음( $this->PageNo ) || !isset( $this->PageNo ) || !is_numeric( $this ->PageNo ) || $this->PageNo < 1 ? 1 : $this->PageNo;
- return $this;
-
- 공개 함수 포스트( $Key, $Filter = true ){
- return $Filter ? Strip_tags($_POST[$Key]) : $_POST[$Key];
- }
-
- 공개 함수 get( $Key, $Filter = true ){
- return $Filter ?strip_tags($_GET[$Key]) : $_GET[$Key];
- }
-
- 공개 함수 Sel(){
- $this->Select = 'Select' . $this->필드. ' 에서 ' . $this->테이블 . $this->어디에서 . $this->Order;
- $this->Connection( $this->Select );
- if ( $this->Rest->num_rows ) {
- while ( $Rs = $this->Rest->fetch_assoc() ) {
- $this->Result[] = $Rs;
- }
- }
- $DataBase = $this->Result;
- 빈 값($DataBase)을 반환합니까? false : $DataBase;
- }
-
- 공개 함수 쿼리( $Sql = '', $Type = 'not', $biao = false ) {
- $this->Select = $Sql ;
- $this->Connection( $this->Select );
- if ( $this->Rest->num_rows ) {
- if ( !$biao ) {
- while ( $Rs = $this->Rest->fetch_array() ) {
- $this->Result[] = !preg_match('/^d $/i', $Type) ? $Rs : $Rs[ $Type ];
- }
- } else {
- while ( $Rs = $this->Rest->fetch_assoc() ) {
- $this-> Result[] = $Rs;
- }
- }
- }
- $DataBase = $this->Result;
- return empty($DataBase) ? false : $DataBase;
-
- }
-
- 공개 함수 실행( $Sql = '' ){
- $this->Connection( $Sql );
- return $this- >Rest;
- }
-
-
- 공개 함수가 있습니다( $T = '', $F = '', $W = ''){
- if( 비어 있음( $F ) ) { 0을 반환합니다. }
- $cmd = 비어 있음( $W ) ? '' 에서 `baiyinum`으로 sum(' . $F . ') 를 선택합니다. $this->PreFix . $T .'`' : ' `' 에서 `baiyinum`으로 sum(' . $F . ')를 선택합니다. $this->PreFix . $T .'` 어디에서 ' . $W;
- $this->Connection( $cmd );
- unset( $T, $F, $W, $cmd );
- $Rel = $this->Rest-> fetch_array();
- return round( $Rel['baiyinum'], 2 );
- }
-
-
- 공개 함수 ExistsTo( $Bili = 10000, $T = '', $ F = '', $W = ''){
- if ( 비어 있음( $F ) ) { return 0; }
- $cmd = 비어 있음( $W ) ? '' 에서 `baiyinum`으로 sum(' . $F . ') 를 선택합니다. $this->PreFix . $T .'`' : ' `' 에서 `baiyinum`으로 sum(' . $F . ')를 선택합니다. $this->PreFix . $T .'` 어디에서 ' . $W;
- $this->Connection( $cmd );
- unset( $T, $F, $W, $cmd );
- $Rel = $this->Rest-> fetch_array();
- return round( $Rel['baiyinum'] * $Bili );
- }
-
-
- 공용 함수 Select( $Type = true, $ListNum = 1 ){ //返回记录(数组shape式, 返回条数)
- $this->Select = '선택' . $this->필드. ' 에서 ' . $this->테이블 . $this->어디에서 . $this->Order;
- if ( is_numeric( $ListNum ) ) {
- if ( $this->PageSize > 0 ) {
- $this->Connection( $this-> );//执行查询
- $this->PageCount = $this->Rest->num_rows;//取得记录总数
- $this->PageNum = ceil($this-> PageCount / $this->PageSize); //总共多少页
- $this->PageNo = $this->PageNo > $this->페이지번호 ? $this->PageNum : $this->PageNo;
- $this->PageStart = ( $this->PageNo - 1 ) * $this->PageSize; //当前从第几条开始返回
- $this->Select .= 'limit' . $this->PageStart . ', ' .$this->PageSize; //중요한 새로운构造sql语句
- } else {
- $this->Select .= 'limit' . $목록번호; // 새로운 버전의 sql语句
- }
- } else {
- $this->Select .= 'limit 1'; //중요 새로운构造sql语句
- }
- //echo $this->Select;
- $this->Connection( $this->Select );//再次执行查询
- if ( $this->Rest->num_rows ) {//如果记录存재
- if ( $Type ) {
- while ( $Rs = $this->Rest->fetch_array() ) {
- $this->Result[] = $Rs;
- }
- }else{
- while ( $Rs = $this->Rest->fetch_assoc() ) {
- $ this->Result[] = $Rs;
- }
- }
- }
- if ( ( $ListNum == 1 or !is_numeric( $ListNum ) ) && !$this->PageSize ) { $this->Result = $this->Result[0]; }
- $DataBase = $this->Result;
- return empty($DataBase) ? false : $DataBase;
- }
-
- public function Num() { //返回记录总数
- $this->Select = 'Select ' . $this->필드. ' 에서 ' . $this->테이블 . $this->어디에서 . $this->Order;
- $this->Connection( $this->Select );//执行查询
- return $this->Rest->num_rows;//取得记录总数
- }
-
- public function PageNav($NumNav = false ) { //分页
- $Action = $this -> get('action');
- !empty( $Action ) or $Action = 'index';
- $Module = $this -> get('module');
- !empty( $Module ) or $Module = 'index';
- $NavUrl = '/' . $Module . '/' . $Action . '/' . $this -> PageKey .'/';
- $NaIndex = '/' . $Module . '/' . $Action;
- $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;
- }
-
- 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 '
- Alert("' . $Text . '");
- document.location="' . $_SERVER[' HTTP_REFERER'] . '";
- //-->
- < ;/script>';
- 종료;
- }
-
- #현재 시스템 시간 가져오기
- 공용 함수 Times(){
- return str_replace('-', '[jian]' , date('Y-m-d H:i:s'));
- }
-
- #取得用户IP地址
- public function GetIP(){
- if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
- $ ip = getenv("HTTP_CLIENT_IP");
- else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "알 수 없음"))
- $ip = getenv("HTTP_X_FORWARDED_FOR");
- else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "알 수 없음"))
- $ip = getenv("REMOTE_ADDR");
- else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "알 수 없음"))
- $ip = $_SERVER[' REMOTE_ADDR'];
- else
- $ip = "알 수 없음";
- 반환($ip);
- }
-
-
- //最后关闭数据库连接
- public function Close(){
- !is_object( $this -> Conn ) 또는 mysqli_close( $this -> Conn );
- }
-
- }
复代码
|