国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php連接mysql數據庫mysql.class.php

2024-09-04 11:44:16
字體:
來源:轉載
供稿:網友

本文章是一款比較實例的php 連接mysql數據庫的連接類,比起一般的php mysql數據庫函數要實用方法了很多,操作維護起來也很簡單,只要處理這一個文伯就KO了,實例類代碼如下:

  1. /* 
  2. ?+----------------------------------------------------------------------- 
  3. | 文件概要:php連接mysql數據庫 
  4. | 文件名稱:mysql.class.php 
  5. | 創建時間:2010-9-7 
  6. +----------------------------------------------------------------------- 
  7. */ 
  8. class mysql { 
  9.  private $server//服務器名 
  10.  private $user//數據庫用戶名 
  11.  private $password//數據庫密碼 
  12.  private $database//數據庫名 
  13.  private $link//mysql連接標識符 
  14.  private $charset = "utf8"//數據庫編碼,默認為utf8 
  15.  /*===================================================== 
  16.   * 方法:__construct 
  17.   * 功能:構造函數 
  18.   * 參數:$server,$user,$password,$database,$charset 
  19.   * 說明:實例化時自動連接數據庫. 
  20.   ====================================================*/ 
  21.  function __construct($server$user$password$database$charset) { 
  22.   $this->server = $server
  23.   $this->user = $user
  24.   $this->password = $password
  25.   $this->database = $database
  26.   $this->charset = $charset
  27.   $this->connect(); 
  28.  } 
  29.  /*==================================================== 
  30.   * 方法:connect 
  31.   * 功能:連接數據庫 
  32.   * 參數:無 
  33.   * 說明:連接mysql服務器,連接數據庫,設置字符編碼 
  34.   ===================================================*/ 
  35.  function connect() { 
  36.   $this->link = mysql_connect($this->server, $this->user, $this->password) or die($this->error("數據庫服務器連接出錯!")); 
  37.   mysql_select_db($this->database, $this->link) or die($this->error("數據庫連接出錯!")); 
  38.   mysql_query("set names '$this->charset'"); 
  39.  } 
  40.  /*=================================================== 
  41.   * 方法:query 
  42.   * 功能:執行sql 
  43.   * 參數:$sql 
  44.   * 說明:對傳過來的sql語句執行,并返回結果$result資源標識符 
  45.   ==================================================*/ 
  46.  function query($sql) { 
  47.   $result = mysql_query($sql$this->link); 
  48.   if (!$result) { 
  49.    $this->error($sql . "語句執行失敗!"); 
  50.    return false; 
  51.   } else { 
  52.    return $result
  53.   } 
  54.  }  
  55.  
  56.  /*=================================================== 
  57.   * 方法:fetcharray 
  58.   * 功能:從結果集中取一行做為數組 
  59.   * 參數:$result資源標識符 
  60.   * 說明:需要提供sql語句執行返回的資源標識符 
  61.   ==================================================*/ 
  62.  function fetcharray($result) { 
  63.   return mysql_fetch_array($result); 
  64.  } 
  65.  /*=================================================== 
  66.   * 方法:fetchall 
  67.   * 功能:從結果集中取出所有記錄做為二維數組$arr 
  68.   * 參數:$result資源標識符 
  69.   * 說明:循環取所有記錄保存為$arr 
  70.   ==================================================*/ 
  71.  function fetchall($result) { 
  72.   $arr[] = array (); 
  73.   while ($row = mysql_fetch_array($result)) { 
  74.    $arr[] = $row
  75.   } 
  76.   mysql_free_result($result); 
  77.   return $arr
  78.  } 
  79.  /*=================================================== 
  80.   * 方法:numrows 
  81.   * 功能:統計結果集中記錄數 
  82.   * 參數:$result資源標識符 
  83.   * 說明:統計行數 
  84.   ==================================================*/ 
  85.  function numrows($result) { 
  86.   return mysql_num_rows($result); 
  87.  } 
  88.  /*=================================================== 
  89.   * 方法:numfields 
  90.   * 功能:統計結果集中字段數 
  91.   * 參數:$result資源標識符 
  92.   * 說明:統計字段數 
  93.   ==================================================*/ 
  94.  function numfields($result) { 
  95.   return mysql_num_fields($result); 
  96.  } 
  97.  /*=================================================== 
  98.   * 方法:affectedrows 
  99.   * 功能:取得前一次mysql操作所影響的記錄行數 
  100.   * 參數:無 
  101.   * 說明:取得前一次mysql操作所影響的記錄行數 
  102.   ==================================================*/ 
  103.  function affectedrows() { 
  104.   return mysql_affected_rows($this->link); 
  105.  } 
  106.  /*=================================================== 
  107.   * 方法:version 
  108.   * 功能:取得mysql版本 
  109.   * 參數:無 
  110.   * 說明:取得當前數據庫服務器mysql的版本 
  111.   ==================================================*/ 
  112.  function version() { 
  113.   return mysql_get_server_info(); 
  114.  } 
  115.  /*=================================================== 
  116.   * 方法:insertid 
  117.   * 功能:取得上一步insert操作產生的id 
  118.   * 參數:無 
  119.   * 說明:取得上一步insert操作產生的自增字段id 
  120.   ==================================================*/ 
  121.  function insertid() { 
  122.   return mysql_insert_id($this->link); 
  123.  } 
  124.  
  125.  /*=================================================== 
  126.   * 方法:checksql 
  127.   * 功能:檢查sql語句 
  128.   * 參數:sql語句 
  129.   * 說明:關閉非永久數據庫連接 
  130.   ==================================================*/ 
  131.  function checksql($db_string$querytype = 'select') { 
  132.         $clean = ''
  133.         $old_pos = 0; 
  134.         $pos = - 1; 
  135.         //如果是普通查詢語句,直接過濾一些特殊語法 
  136.         if ($querytype == 'select') { 
  137.             $notallow1 = "[^0-9a-z@._-]{1,}(union|sleep|benchmark|load_file|outfile)[^0-9a-z@.-]{1,}"
  138.             //$notallow2 = "--|/*"; 
  139.             if (eregi ( $notallow1$db_string )) { 
  140.                 exit ( "<font size='5' color='red'>safe alert: request error step 1 !</font>" ); 
  141.             } 
  142.         } 
  143.         //完整的sql檢查 
  144.         while ( true ) { 
  145.             $pos = strpos ( $db_string''', $pos + 1 ); 
  146.             if ($pos === false) { 
  147.                 break
  148.             } 
  149.             $clean .= substr ( $db_string$old_pos$pos - $old_pos ); 
  150.             while ( true ) { 
  151.                 $pos1 = strpos ( $db_string''', $pos + 1 ); 
  152.                 $pos2 = strpos ( $db_string''$pos + 1 ); 
  153.                 if ($pos1 === false) { 
  154.                     break
  155.                 } elseif ($pos2 == false || $pos2 > $pos1) { 
  156.                     $pos = $pos1
  157.                     break
  158.                 } 
  159.                 $pos = $pos2 + 1; 
  160.             } 
  161.             $clean .= '$s$'
  162.             $old_pos = $pos + 1; 
  163.         } 
  164.         $clean .= substr ( $db_string$old_pos ); 
  165.         $clean = trim ( strtolower ( preg_replace ( array ('~s+~s' ), array (' ' ), $clean ) ) ); 
  166.         //老版本的mysql并不支持union,常用的程序里也不使用union,但是一些黑客使用它,所以檢查它 
  167.         if (strpos ( $clean'union' ) !== false && preg_match ( '~(^|[^a-z])union($|[^[a-z])~s'$clean ) != 0) { 
  168.             $fail = true; 
  169.         } 
  170.         //發布版本的程序可能比較少包括--,#這樣的注釋,但是黑客經常使用它們 
  171.         elseif (strpos ( $clean'/*' ) > 2 || strpos ( $clean'--' ) !== false || strpos ( $clean'#' ) !== false) { 
  172.             $fail = true; 
  173.         } 
  174.         //這些函數不會被使用,但是黑客會用它來操作文件,down掉數據庫 
  175.         elseif (strpos ( $clean'sleep' ) !== false && preg_match ( '~(^|[^a-z])sleep($|[^[a-z])~s'$clean ) != 0) { 
  176.             $fail = true; 
  177.         } elseif (strpos ( $clean'benchmark' ) !== false && preg_match ( '~(^|[^a-z])benchmark($|[^[a-z])~s'$clean ) != 0) { 
  178.             $fail = true; 
  179.         } elseif (strpos ( $clean'load_file' ) !== false && preg_match ( '~(^|[^a-z])load_file($|[^[a-z])~s'$clean ) != 0) { 
  180.             $fail = true; 
  181.         } elseif (strpos ( $clean'into outfile' ) !== false && preg_match ( '~(^|[^a-z])intos+outfile($|[^[a-z])~s'$clean ) != 0) { 
  182.             $fail = true; 
  183.         } 
  184.         //老版本的mysql不支持子查詢,我們的程序里可能也用得少,但是黑客可以使用它來查詢數據庫敏感信息 
  185.         elseif (preg_match ( '~([^)]*?select~s'$clean ) != 0) { 
  186.             $fail = true; 
  187.         } 
  188.         if (! emptyempty ( $fail )) { 
  189.             exit ( "<font size='5' color='red'>safe alert: request error step 2!</font>" ); 
  190.         } else { 
  191.             return $db_string
  192.         } 
  193.     } 
  194.  /*=================================================== 
  195.   * 方法:close 
  196.   * 功能:關閉連接 
  197.   * 參數:無 
  198.   * 說明:關閉非永久數據庫連接 
  199.   ==================================================*/ 
  200.  function close() { 
  201.   mysql_close($this->link); 
  202.  } 
  203.  /*=================================================== 
  204.   * 方法:error 
  205.   * 功能:提示錯誤 
  206.   * 參數:$err_msg 
  207.   * 說明:對給出的錯誤提示內容給予echo 
  208.   ==================================================*/ 
  209.  function error($err_msg = "") { 
  210.   if ($err_msg == "") { 
  211.    echo "errno:" . mysql_errno . "</br>"
  212.    echo "error:" . mysql_error . "</br>"
  213.   } else { 
  214.    echo $err_msg
  215.   } 
  216.  } 
  217.  /*=================================================== 
  218.   * 方法:__destruct 
  219.   * 功能:析構函數 
  220.   * 參數:無 
  221.   * 說明:釋放類,關閉連接 
  222.   ==================================================*/ 
  223.  function __destruct() { 
  224.   $this->close(); 
  225.  } 
  226. //數據庫連接函數 
  227. function conn_db(){ 
  228.  $link_db=new mysql(web_server,web_user,web_pwd,web_db,"utf8");//開源代碼Vevb.com 
  229.  return $link_db
  230. }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青浦区| 临江市| 榆林市| 临颍县| 大悟县| 莎车县| 内丘县| 仪征市| 乌审旗| 榆中县| 方城县| 巴楚县| 杭州市| 虹口区| 嘉善县| 大庆市| 平顺县| 公安县| 长海县| 秀山| 新竹市| 景德镇市| 谢通门县| 万安县| 平山县| 漳浦县| 满城县| 炉霍县| 敦煌市| 伊金霍洛旗| 马公市| 陇川县| 句容市| 阳东县| 开阳县| 四子王旗| 察哈| 玉山县| 寿阳县| 遂平县| 曲靖市|