Home  >  Article  >  Backend Development  >  Share a self-written PHP class for operating mysql database

Share a self-written PHP class for operating mysql database

WBOY
WBOYOriginal
2016-07-25 08:48:56832browse
This is a class I wrote myself. Everyone is welcome to discuss and guide. Some usage methods:
//Declare database objects
$Conn = new Mysql;
//Load database parameters
$Conn->Parameter (database server, database user name , database password, database name, database encoding, database table prefix [can be empty]);

The above code has already loaded this class file and initialized some database connection parameters!
The following are some basic method functions:
1. $Conn -> Table();
Select the data table, the parameter is the name of the data table
2. $Conn -> Field();
Select the field name, multiple Separate with commas, if this method is not called, all will be returned
3. $Conn -> Where();
Sql Where sub-statement, filter based on conditions
4. $Conn -> Order();
Sql sorting
5 , $Conn -> Page (int);
The parameter is a positive integer number. If this method is called, the records will be displayed in pages
6. $Conn -> Select (Boolean value);
Execute the query and return the query results, if any , it is a two-dimensional array. If none, it returns false. The parameter can be omitted. If omitted, the default is true. The returned array contains numeric elements
7, $Conn -> Del();
Delete records
8, $ Conn -> Edit(array());
Modify the record, the parameter is a one-dimensional array, the array key is the field name, and the array value is the field value
9. $Conn -> Into(array());
Add the record, The parameter is a one-dimensional array, the array key is the field name, and the array value is the field value.

The above methods can be called continuously, for example:

$Rult = $Conn -> Table('user') -> Select(); //The query returns all records of the user table
$Rult = $Conn -> Table( 'user') -> Page(20) -> Select();//The query returns all records in the user table and displays them in pages, 20 records per page;

There are also many method calls and tricks, which I will explain in detail later when I have time!
  1. /*
  2. Database operation class
  3. Operation method: Facing objects
  4. Production time: 2013-3-10
  5. Current version: BqhMysql(mysqli)1.0.1
  6. Software author: Sad Song
  7. Contact QQ: 36975
  8. Contact number: 18907975647
  9. Email: admin@q128.com
  10. Contact address: Xiaosong Town, Shicheng County, Ganzhou City, Jiangxi Province
  11. Postal code: 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; //Database connection status, false means not connected or the connection is abnormal
  23. public $Err = true; //Sql execution result
  24. private $Table;
  25. private $Field = '*';
  26. private $Where = '';
  27. private $Order = '';
  28. private $PageSize = 0; //Page display->How many items per page, 0 means no paging display
  29. private $PageCount = 1; //Paging display->How many items are there in total
  30. private $PageNum = 1; //Paging display->How many pages are there in total
  31. private $PageNo = 1; //Paging display->What is the current page
  32. private $PageKey = 'page'; //Page url parameter key
  33. private $PageStart = 0; //Page display->The current item to return from
  34. private $Select;
  35. private $Rest;
  36. private $Result = false;//Result set
  37. public $FormArray = array();
  38. public $Instr_ID = 0;
  39. private $j = 0;
  40. public function Parameter($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. private function Connection( $Sql ){
  50. !function_exists(mysqli_connect ) ? die('Query failed, unable to load mysqli extension') : 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('Database connection error, please check the database connection parameters') : 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. public function 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. public function Table( $TableName ) {//Data table
  72. $this -> null();
  73. $this->Table = '`' . $this->PreFix . $TableName . '`';
  74. return $this;
  75. }
  76. public function Field( $Array = '*' ) {//data Field
  77. !empty( $this->Field ) ? $this->Field = '' : null;
  78. $Array = explode(',', $Array);
  79. foreach ( $Array as $field ) {
  80. $this->Field .= !$this->Start ? '`' . $field . '`' : ', `' . $field . '`';
  81. $this->Start++;
  82. }
  83. $this->Start = 0;
  84. return $this;
  85. }
  86. public function Where( $Where ) {//Condition
  87. $this->Where = ' where ' .$Where;
  88. return $this;
  89. }
  90. public function Order( $Order ) {//Sort
  91. $this->Order = ' order by ' . $Order;
  92. return $this;
  93. }
  94. public function pk( $key ) {//Paging url parameter key
  95. $this->PageKey = $key;
  96. return $this;
  97. }
  98. public function Page( $PageSize ) {//Paging
  99. $this->PageSize = $PageSize;
  100. $this-> ;PageNo = $this->get( $this->PageKey );
  101. $this->PageNo = empty( $this->PageNo ) || !isset( $this->PageNo ) || ! is_numeric( $this->PageNo ) || $this->PageNo < 1 ? 1 : $this->PageNo;
  102. return $this;
  103. }
  104. public function post( $Key, $Filter = true ){
  105. return $Filter ? strip_tags($_POST[$Key]) : $_POST[$Key];
  106. }
  107. public function get( $Key, $Filter = true ){
  108. return $Filter ? strip_tags($_GET [$Key]) : $_GET[$Key];
  109. }
  110. public function Sel(){
  111. $this->Select = 'Select ' . $this->Field . ' from ' . $this->Table . $this->Where . $this->Order;
  112. $this->Connection( $this->Select );
  113. if ( $this->Rest->num_rows ) {
  114. while ( $Rs = $this->Rest->fetch_assoc() ) {
  115. $this->Result[] = $Rs;
  116. }
  117. }
  118. $DataBase = $this->Result;
  119. return empty($DataBase) ? false : $DataBase;
  120. }
  121. public function querys( $Sql = '', $Type = 'not', $biao = false ) {
  122. $this->Select = $Sql;
  123. $this->Connection( $this->Select );
  124. if ( $this->Rest->num_rows ) {
  125. if ( !$biao ) {
  126. while ( $Rs = $this->Rest->fetch_array() ) {
  127. $this->Result[] = !preg_match('/^d+$/i', $Type) ? $Rs : $Rs[ $Type ];
  128. }
  129. } else {
  130. while ( $Rs = $this->Rest->fetch_assoc() ) {
  131. $this->Result[] = $Rs;
  132. }
  133. }
  134. }
  135. $DataBase = $this->Result;
  136. return empty($DataBase) ? false : $DataBase;
  137. }
  138. public function executes( $Sql = '' ){
  139. $this->Connection( $Sql );
  140. return $this->Rest;
  141. }
  142. public function exists( $T = '', $F = '', $W = ''){
  143. if ( empty( $F ) ) { return 0; }
  144. $cmd = empty( $W ) ? 'Select sum(' . $F . ') as `baiyinum` from `' . $this->PreFix . $T .'`' : 'Select sum(' . $F . ') as `baiyinum` from `' . $this->PreFix . $T .'` Where ' . $W;
  145. $this->Connection( $cmd );
  146. unset( $T, $F, $W, $cmd );
  147. $Rel = $this->Rest->fetch_array();
  148. return round( $Rel['baiyinum'], 2 );
  149. }
  150. public function ExistsTo( $Bili = 10000, $T = '', $F = '', $W = ''){
  151. if ( empty( $F ) ) { return 0; }
  152. $cmd = empty( $W ) ? 'Select sum(' . $F . ') as `baiyinum` from `' . $this->PreFix . $T .'`' : 'Select sum(' . $F . ') as `baiyinum` from `' . $this->PreFix . $T .'` Where ' . $W;
  153. $this->Connection( $cmd );
  154. unset( $T, $F, $W, $cmd );
  155. $Rel = $this->Rest->fetch_array();
  156. return round( $Rel['baiyinum'] * $Bili );
  157. }
  158. public function Select( $Type = true, $ListNum = 1 ){ //返回记录(数组形式, 返回条数)
  159. $this->Select = 'Select ' . $this->Field . ' from ' . $this->Table . $this->Where . $this->Order;
  160. if ( is_numeric( $ListNum ) ) {
  161. if ( $this->PageSize > 0 ) {
  162. $this->Connection( $this->Select );//执行查询
  163. $this->PageCount = $this->Rest->num_rows;//取得记录总数
  164. $this->PageNum = ceil($this->PageCount / $this->PageSize); //总共有多少页
  165. $this->PageNo = $this->PageNo > $this->PageNum ? $this->PageNum : $this->PageNo;
  166. $this->PageStart = ( $this->PageNo - 1 ) * $this->PageSize; //当前从第几条开始返回
  167. $this->Select .= ' limit ' . $this->PageStart . ', ' .$this->PageSize; //重新构造sql语句
  168. } else {
  169. $this->Select .= ' limit ' . $ListNum; //重新构造sql语句
  170. }
  171. } else {
  172. $this->Select .= ' limit 1'; //重新构造sql语句
  173. }
  174. //echo $this->Select;
  175. $this->Connection( $this->Select );//再次执行查询
  176. if ( $this->Rest->num_rows ) {//如果记录存在
  177. if ( $Type ) {
  178. while ( $Rs = $this->Rest->fetch_array() ) {
  179. $this->Result[] = $Rs;
  180. }
  181. }else{
  182. while ( $Rs = $this->Rest->fetch_assoc() ) {
  183. $this->Result[] = $Rs;
  184. }
  185. }
  186. }
  187. if ( ( $ListNum == 1 or !is_numeric( $ListNum ) ) && !$this->PageSize) { $this->Result = $this->Result[0]; }
  188. $DataBase = $this->Result;
  189. return empty($DataBase) ? false : $DataBase;
  190. }
  191. public function Num() { //返回记录总数
  192. $this->Select = 'Select ' . $this->Field . ' from ' . $this->Table . $this->Where . $this->Order;
  193. $this->Connection( $this->Select );//执行查询
  194. return $this->Rest->num_rows;//取得记录总数
  195. }
  196. public function PageNav($NumNav = false ) { //分页
  197. $Action = $this -> get('action');
  198. !empty( $Action ) or $Action = 'index';
  199. $Module = $this -> get('module');
  200. !empty( $Module ) or $Module = 'index';
  201. $NavUrl = '/' . $Module . '/' . $Action . '/' . $this -> PageKey .'/';
  202. $NaIndex = '/' . $Module . '/' . $Action;
  203. $PageHtml = "\n
    ";
  204. $PageHtml .= '' . $this->PageCount . '条记录 ' . $this->PageNo . '/' . $this->PageNum . '页 ';
  205. $this->PageNo <= 1 or $PageHtml .= "首页\nPageNo - 1) . "\">上一页\n";
  206. if ( $NumNav ) { $PageHtml .= $this->NumPage($NavUrl); }
  207. $this->PageNo >= $this->PageNum or $PageHtml .= "PageNo + 1) . "\">下一页\nPageNum . "\">尾页\n";
  208. $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;
  • }
  • // Form processing begins
  • // Submit when judging form
  • public function FormIs( $Keys = 'mm' ) {
  • return $_POST[ $Keys ] == 1 ? true : false;
  • }
  • //Get data via post
  • public function _post( $Keys = '', $TiHuan = '') {
  • $Values ​​= strip_tags( $_POST[ $Keys ] );
  • $ this->FormArray[$Keys] = empty( $Values ​​) ? $TiHuan : $Values;
  • return empty( $Values ​​) ? $TiHuan : $Values;
  • }
  • //get method to get data
  • public function _get ( $Keys = '', $TiHuan = '') {
  • $Values ​​= strip_tags( $_GET[ $Keys ] );
  • return empty( $Values ​​) ? $TiHuan : $Values;
  • }
  • //Judge whether Is a number and not less than 0
  • public function IsNum( $Num = 0, $Mesg = 'Parameter must be a number' ) {
  • if ( is_numeric( $Num ) && !empty( $Num ) && $Num >= 0 ) {
  • return $Num;
  • }else{
  • die( $Mesg );
  • }
  • }
  • //Determine whether it is a number and not less than 0 and return True/False
  • public function NumBer( $Num = 0) {
  • return is_numeric( $Num ) && !empty( $Num ) && $Num >= 0 ? true : false;
  • }
  • //Detect that relevant data seems to exist
  • public function IsData($Types = true, $memg = 'data Already exists' ){
  • $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;
  • }
  • }
  • //Write Into database records
  • public function into( $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;
  • }
  • //Write data in array form
  • public function MsgBox( $Table = '', $Filed = array() ) {
  • $this -> Table($Table);
  • foreach( $Filed as $Key => $Val ) {
  • $this -> FormArray[ $Key ] = $Val;
  • }
  • return $this -> Into('No data obtained');
  • }
  • //Modify the database Record
  • 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 );
  • unset( $Array, $duan, $Fan, $Files, $Huan, $Hui, $I, $ key, $Sql, $Sub, $Val, $Zhan, $val );
  • return !empty( $this -> Err ) ? false : true;
  • }
  • }
  • //Delete database records
  • public function del (){
  • $Sql = 'delete from ' . $this->Table . $this->Where;
  • $this->Connection( $Sql );
  • unset($Sql);
  • return !empty( $this->Err ) ? false : true;
  • }
  • //Form processing ends
  • //Page jump
  • public function Msg( $Text = 'Operation successful' ) {
  • echo '';
  • echo '';
  • exit;
  • }
  • #Get the current system time
  • 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("HTTP_X_FORWARDED_FOR");
  • 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['REMOTE_ADDR'];
  • else
  • $ip = "unknown";
  • return($ip);
  • }
  • //最后关闭数据库连接
  • public function Close(){
  • !is_object( $this -> Conn ) or mysqli_close( $this -> Conn );
  • }
  • }
  • 复制代码


    Statement:
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Previous article:While we are still youngNext article:While we are still young