首頁  >  文章  >  後端開發  >  分享一個自己寫的php操作mysql資料庫的類

分享一個自己寫的php操作mysql資料庫的類

WBOY
WBOY原創
2016-07-25 08:48:56877瀏覽
這是我自己寫的一個類,歡迎大家討論指導
部分使用方法:
//聲明資料庫物件
$Conn = new Mysql;
//載入資料庫參數
$Conn ->Parameter(資料庫伺服器, 資料庫使用者名稱, 資料庫密碼, 資料庫名稱, 資料庫編碼, 資料庫表前綴[可為空]);

上面的程式碼就已經載入這個類別檔案進來了,並且初始化了一些資料庫連線參數!
以下介紹幾個基本上是方法函數:
1、 $Conn -> Table();
選擇資料表,參數是資料表名稱
2、$Conn -> Field();
選擇的欄位名稱,多個用逗號隔開,如不呼叫這個方法,則傳回全部
3、$Conn -> Where();
Sql Where子語句,依照條件篩選
4、$Conn -> Order();
Sql 排序
5、$Conn -> Page(int);
參數是一個正整數數字,如調用這個方法,記錄將分頁顯示
6、$Conn -> Select(布林值);
執行查詢,返回查詢結果,如果有,則是一個二維數組,如果無,則返回假,參數可省略,如省略,默認為真,傳回的陣列包含數字元素
7、$Conn -> Del();
刪除記錄
8、 $Conn -> Edit(array());
修改記錄,參數是一個一維數組,數組鍵是字段名稱,數組值是字段值
9、$Conn -> Into(array());
新增記錄,參數是一個一維數組,數組鍵是字段名稱,數組值是字段值。

以上方法可連續調用,例如:

$Rult = $Conn -> Table('user') -> Select(); //查詢返回user表的所有記錄
$Rult = $Conn -> Table('user') -> Page(20) -> Select();//查詢回傳user表的所有記錄,並分頁顯示,每頁20筆;

還有很多方法呼叫和訣竅,以後有空再慢慢細說!
  1. /*
  2. 資料庫操作類別
  3. 操作方式:面對物件
  4. 製作時間:2013-3-10
  5. 目前版本:BqhMysql(mysqli)1.0.1
  6. 軟體作者:傷心的歌
  7. 聯絡QQ :36975
  8. 聯絡電話:18907975647
  9. 聯絡電子郵件:admin@1288.com地址:江西省贛州市石城縣小松鎮
  10. 郵遞區號:342706
  11. */
  12. class Mysql{
  13. private $LocalHost = 'localhost';
  14. private $Lof root';
  15. private $LocalPass = '123456';
  16. private $LocalBase = 'jiangxibaiyi';
  17. private $LocalCode = 'UTF8';
  18. private $private $private
  19. private $Start = 0;
  20. private $Error = false; //資料庫連線狀態, false表示未連線或連線不正常
  21. public $Err = true; //Sql執行結果
  22. private $Table;
  23. private $Field = '*';
  24. private $Where = '';
  25. private $Order = '';
  26. private $private $Order = '';
  27. private $PageSize = 0; /分頁顯示->每頁多少條,0為不分頁顯示
  28. private $PageCount = 1; //分頁顯示->總共有多少條
  29. private $PageNum = 1; //分頁顯示->總共有多少頁
  30. private $PageNo = 1; //分頁顯示->目前第幾頁
  31. private $PageKey = 'page'; //分頁url參數鍵
  32. private $PageStart = 0; //分頁顯示->目前從第幾條開始回傳
  33. private $Select;
  34. private $Rest;
  35. private $Result = false;//結果集
  36. public $FormArray = array();
  37. public $Instr_ID = 0;
  38. private $j = 0;
  39. public function Parameter($Loca, $Root , $Pass, $Base, $Code, $PreFix = ''){
  40. $this->LoaclUser = $Root;
  41. $this->LocalBase = $Base;
  42. $this->LocalCode = $Code;
  43. $this->LocalHost = $Loca;
  44. $this->LocalPass = $Pass;
  45. $this->PreFix = $PreFix;
  46. return $this;
  47. } }
  48. private function Connection( $Sql ){
  49. !function_exists(mysqli_connect) ? die('查詢失敗,無法載入mysqli擴充') : null;
  50. $this->Conn = @new mysqli擴充 $ ->LocalHost, $this->LoaclUser, $this->LocalPass, $this->LocalBase);
  51. $this->Error = mysqli_connect_errno() == 0 ? true : false;
  52. !$this-this-this- >Error ? die('資料庫連線錯誤,請檢查資料庫連線參數') : null;
  53. $this->Conn->query('SET NAMES ' . $this->LocalCode);
  54. $this- >Rest = $this->Conn->query($Sql);
  55. $this->Err = mysqli_error($this->Conn);
  56. $this->Instr_ID = mysqli_insert_id($this->Conn );
  57. $this->Rest->free_result;
  58. $this->Conn->close;
  59. $this -> FormArray = '';
  60. return $this;
  61. }
  62. public function null(){
  63. $this->PageSize = 0;
  64. //$this->PageCount = 1;
  65. $this->PageStart = 1;
  66. $ this->Field = ' * ';
  67. $this->Select = '';
  68. unset($this->Table, $this->Where,$this->Order, $this->Result) ;
  69. }
  70. public function Table( $TableName ) {//資料表
  71. $this -> null();
  72. $this->Table = '`' . $this- >PreFix . $TableName . '`';
  73. return $this;
  74. }
  75. public function Field( $Array = '*' ) {//資料欄位
  76. !empty( $ this->Field ) ? $this->Field = '' : null;
  77. $Array = explode(',', $Array);
  78. foreach ( $Array as $field ) {
  79. $this ->Field .= !$this->Start ? '`' . $field . '`' : ', `' . $field . '`';
  80. $this->Start ;
  81. }
  82. $this->Start = 0;
  83. return $this;
  84. }
  85. public function Where( $Where ) {//條件
  86. $this->Where = ' where ' . $Where;
  87. return $this;
  88. }
  89. public function Order( $Order ) {//排序
  90. $this->Order = ' order by ' . $Order;
  91. return $this;
  92. }
  93. public function pk( $key ) {//分頁url參數鍵
  94. $this->PageKey = $key;
  95. return $this;
  96. }
  97. public function Page( $PageSize ) {//分頁
  98. $this->PageSize = $PageSize;
  99. $this->PageNo = $this->get( $this-> PageKey );
  100. $this->PageNo = empty( $this->PageNo ) || !isset( $this->PageNo ) || !is_numeric( $this->PageNo ) || $this->PageNo PageNo PageNo;
  101. return $this;
  102. }
  103. public function post( $Key, $Filter = true ){
  104. return $Filter ? strip_tags($ _POST[$Key]) : $_POST[$Key];
  105. }
  106. public function get( $Key, $Filter = true ){
  107. return $Filter ? strip_tags($_GET[$ Key]) : $_GET[$Key]; }
  108. public function Sel(){
  109. $this->Select = 'Select ' . $this->Field 。 this->Rest->num_rows ) {
  110. while ( $Rs = $this->Rest->fetch_assoc() ) {
  111. $this->Result[] = $Rs;
  112. }
  113. }
  114. $DataBase = $this->結果;
  115. 回傳空($DataBase) ? > $this->Select = $Sql ;
  116. $this->連接( $this->Select );
  117. if ( $this->Rest->num_rows ) {
  118. if ( !$biao ) {
  119. while ( $Rs = $this->Rest->fetch_array() ) {
  120. $this->Result[] = !preg_match('/^d $/i', $Type) ? $Rs : $Rs[ $Type ];
  121. }
  122. } else {
  123. while ( $Rs = $this->Rest->fetch_assoc() ) {
  124. $this->; 結果[ ] = $Rs;
  125. }
  126. }
  127. }
  128. $DataBase = $this->Result;
  129. 回傳空($DataBase) ? }
  130. 公用函數執行( $Sql = '' ){
  131. $this->Connection( $Sql );
  132. return $this- >Rest;
  133. }
  134. 公用函數存在( $T = '', $F = '', $W = ''){
  135. if ( 空( $F ) ) { 回傳0; }
  136. $cmd = 空( $W ) ? '從 `' 選擇 sum(' . $F . ') 作為 `baiyinum` 。 baiyinum` 。 );
  137. $Rel = $this->休息->; fetch_array();
  138. return round( $Rel['baiyinum'], 2 );
  139. }
  140. public function ExistsTo( $Bili = 10000, $T = '', $ F = '', $W = ''){
  141. if (empty( $F ) ) { return 0; }
  142. $cmd = 空( $W ) ? '從 `' 選擇 sum(' . $F . ') 作為 `baiyinum` 。 baiyinum` 。 cmd );
  143. $Rel = $this->Rest->; fetch_array();
  144. return round( $Rel['baiyinum'] * $Bili );
  145. }
  146. public function Select( $Type = true, $ListNum = 1 ){ //傳回記錄(貨物形式,回傳條數)
  147. $this->Select = 'Select ' . $this->Field 。 > 0 ) {
  148. $this->Connection( $this->; Select );//執行查詢
  149. $this->PageCount = $this->Rest->num_rows;//取得記錄總數
  150. $this->PageNum = ceil($this->PageNum) PageCount / $this->PageSize); // 總共有多少頁
  151. $this->PageNo = $this->PageNo > $this->PageNum ? $this->PageNum : $this->PageNo;
  152. $this->PageStart = ( $this->PageNo - 1 ) * $this->PageSize; //目前從第幾條開始回傳
  153. $this->Select .= ' limit ' . $this->PageStart 。 // 重建構sql語句
  154. } else {
  155. $this->Select .= ' limit ' . $ListNum; // 重構sql語句
  156. }
  157. } else {
  158. $this->Select .= ' limit 1'; //重建構重sql語句
  159. }
  160. //echo $this->Select;
  161. $this->Connection( $this->Select );//執行查詢
  162. if ( $this ->Rest->num_rows ) {//如果記錄存在
  163. if ( $Type ) {
  164. while ( $Rs = $this->Rest->fetch_array() ) {
  165. $this->Result [] = $Rs;
  166. }
  167. }else{
  168. while ( $Rs = $this->Rest->fetch_assoc() ) {
  169. $this->Result[] = $Rs;
  170. }
  171. }
  172. }
  173. if ( ( $ListNum == 1 或!is_numeric( $ListNum ) ) && !$this->PageSize ) { $this->結果= $this->結果[0]; }
  174. $DataBase = $this->Result;
  175. 回傳空($DataBase) ? false : $DataBase;
  176. }
  177. public function Num() { // 回傳記錄總數
  178. $this->Select = 'Select ' . $this->Field 。 > return $this->Rest->num_rows;//取得總記錄
  179. }
  180. public function PageNav($NumNav = false ) { //分页
  181. $Action = $this -> get('action');
  182. !empty( $Action ) or $Action = 'index';
  183. $Module = $this -> get('module');
  184. !empty( $Module ) or $Module = 'index';
  185. $NavUrl = '/' . $Module . '/' . $Action . '/' . $this -> PageKey .'/';
  186. $NaIndex = '/' . $Module . '/' . $Action;
  187. $PageHtml = "\n
    ";
  188. $PageHtml .= '' . $this->PageCount . '条记录 ' . $this->PageNo . '/' . $this->PageNum . '页 ';
  189. $this->PageNo <= 1 or $PageHtml .= "首页\nPageNo - 1) . "\">上一页\n";
  190. if ( $NumNav ) { $PageHtml .= $this->NumPage($NavUrl); }
  191. $this->PageNo >= $this->PageNum or $PageHtml .= "PageNo + 1) . "\">下一页\nPageNum . "\">尾页\n";
  192. $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;
  • }
  • //表單處理開始
  • //判斷表單時候提交
  • public function FormIs( $Keys = 'mm' ) {
  • return $_POST[ $Keys ] == 1 ? true : false;
  • }
  • //post方式取得資料
  • public function _post( $Keys = '', $TiHuan = '') {
  • $Values = strip_tags( $_POST[ $Keys ] );
  • $this->FormArray[$Keys] = empty( $Values ) ? $TiHuan : $Values ;
  • return empty( $Values ) ? $TiHuan : $Values;
  • }
  • //get方法取得資料
  • public function _get( $Keys = '', $TiHuan = '> public function _get( $Keys = '', $TiHuan = ' ') {
  • $Values = strip_tags( $_GET[ $Keys ] );
  • return empty( $Values ) ? $TiHuan : $Values;
  • }
  • //判斷是否為數字且不小於0
  • public function IsNum( $Num = 0, $Mesg = '參數必須為數字' ) {
  • if ( is_numeric( $Num ) && !empty( $Num ) && $Num >= 0 ) {
  • return $Num;
  • }else{
  • die( $Mesg );
  • }
  • }
  • //判斷是否為數字且不小於0真/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 ( $Types ){
  • $this->Rest->num_rows > 0 ? die( $memg ) : null;
  • } else {
  • return $this->Rest->num_rows;
  • }
  • }
  • //寫入資料庫記錄
  • public function into( $Mesgto( $Mesg = '' ){
  • !is_array( $this->FormArray ) ? die( $Mesg ) : null;
  • $Sql = 'insert into ' . $this->Table . ' (`';
  • $I = 0;
  • foreach ( $this->FormArray as $Key => $Val ){
  • $Duan .= !$I ? $Key . '`' : ', `' . $Key . '`';
  • if ( is_numeric( $Val ) ){
  • $Vals .= !$I ? $Val : ', ' . $Val;
  • }else{
  • $Vals . = !$I ? ''' . $Val . ''' : ', '' . $Val . ''';
  • }
  • $I ;
  • }
  • $Sql .= $ Duan . ') values (' . $Vals . ')';
  • //@file_put_contents('1.sql', $Sql, FILE_APPEND);
  • $this->Connection( $Sql );
  • return !empty( $this->Err ) ? false : true;
  • }
  • //陣列形式寫入資料
  • public function MsgBox( $Table = ' //陣列形式寫入資料
  • 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 ( empty( $Array ) ) { $Array = $this -> FormArray; }
  • if ( !is_array( $Array ) || empty( $Array ) ) {
  • return false;
  • } else {
  • $Sql = 'update ' . $this -> Table . ' set ';
  • $I = 0;
  • $Sub = '';
  • $Huan = array('-' => '[jian]', ' ' => '[jia]', '*' => '[cheng]', '/' => '[chu]');
  • $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 . '` = ' : ', `' . $Files . '` = ';
  • $ Sub .= $duan . $Val;
  • $I ;
  • }
  • $Sql .= $Sub . $this -> Where;
  • foreach ( $Zhan as $Fan => $Hui ) {
  • $Sql = str_replace($Fan, $Hui, $Sql);
  • }
  • //echo $Sql; die;
  • $this -> Connection( $Sql; die;
  • $this -> Connection( $Sql; die;
  • $this -> Connection( $Sql; die;
  • $this -> Connection( $Sql; die;
  • $this -> Connection( $ Sql );
  • unset( $Array, $duan, $Fan, $Files, $Huan, $Hui, $I, $key, $Sql, $Sub, $Val, $Zhan, $val );
  • return !empty( $this -> Err ) ? false : true;
  • }
  • }
  • //刪除數據庫記錄
  • public function del(){
  • $Sql = 'delete from ' . $this->Table . $this->Where;
  • $this->Connection( $Sql );
  • unset($Sql);
  • return !empty( $this-> Err ) ? false : true;
  • }
  • //表單處理結束
  • //頁面跳轉
  • public function Msg( $Text = '操作成功' ) {
  • echo '';
  • echo ''; exit; } #取得系統當前時間 public function 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"), "unknown"))
  • $ip = getenv("HTTPED_FORWARD);
  • else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
  • $ip = getenv("REMOTE_ADDR");
  • else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
  • $ip = $_SERVER'ADDR'], "unknown"))
  • $ip = $_SERVER[' REMOTE_ADDR'];
  • else
  • $ip = "未知";
  • 返回($ip);
  • }
  • //最後關閉資料庫連線
  • public function Close(){
  • !is_object( $this -> Conn ) 或 mysqli_close( $this -> Conn );
  • }
  • }
  • 複製程式碼


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