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

首頁 > 語言 > PHP > 正文

php實現的mysqldb讀寫分離操作類示例

2024-05-04 23:54:46
字體:
來源:轉載
供稿:網友

本文實例講述了php實現的mysqldb讀寫分離操作類。分享給大家供大家參考,具體如下:

/*** php MysqlDB 讀寫分離類* -----------------------------------------------------* $Source: http://code.ilaopo.net/php.class.mysqldb $* $Author: Bevin Chen $* $Email: bevin#lifa8.cn $* $Date: 2009-10-10 $* -----------------------------------------------------*/class mysqldb {  var $querynum = 0;  var $linkr,$linkw,$charset,$pconnect,$dbconfig;  function __constructor($dbarray) {    $this->mysqldb($dbarray);  }  function mysqldb($dbarray,$dbcharset='utf8',$pcontent=0) {    if(!is_array($dbarray[0])) {      echo "數據庫參數錯誤";      return false;    }    $this->charset = $dbcharset;    $this->pconnect = $pconnect;    $this->dbconfig['master'] = $dbarray[0];    $dbServerNum = count($dbarray);    if($dbServerNum > 1) {      /*  * 當x=1 時,$dbarray[0]不作slave  * 當x=0 時,$dbarray[0]作slave  */      $x = 1;      $rand = rand($x,$dbServerNum-1);      $this->dbconfig['slave'] = $dbarray[$rand];    } else {      $this->dbconfig['slave'] = false;    }  }  function connect($dbhost,$dbuser,$dbpw,$dbname) {    if($this->pconnect) {      $link = @mysql_pconnect($dbhost, $dbuser, $dbpw);    } else {      $link = @mysql_connect($dbhost, $dbuser, $dbpw, 1);    }    if($link) {      if($this->version($link) > '4.1') {        if($this->charset) {          @mysql_query("SET character_set_connection=".$this->charset.", character_set_results=".$this->charset.", character_set_client=binary", $link);        }        if($this->version($link) > '5.0.1') {          @mysql_query("SET sql_mode=''", $link);        }      }      if($dbname) {        @mysql_select_db($dbname, $link);      }      //print_r($link);      return $link;    } else {      return false;    }  }  function connectM() {    if(!$this->linkw = $this->connect($this->dbconfig['master'][0],$this->dbconfig['master'][1],$this->dbconfig['master'][2],$this->dbconfig['master'][3])) {      exit("主數據庫連接失敗!");    }    //echo "<br>##connectM!.<br>";  }  function connectS() {    if($this->dbconfig['slave']) {      if(!$this->linkr = $this->connect($this->dbconfig['slave'][0],$this->dbconfig['slave'][1],$this->dbconfig['slave'][2],$this->dbconfig['slave'][3])) {        $this->dbconfig['slave'] = false;        $this->connectS();      }      //echo "<br>##connectS!.<br>";    } else {      if(!$this->linkw) {        $this->connectM();      }      $this->linkr = $this->linkw;    }  }  // db read  function query($sql, $type = '') {    if(!$this->linkr) {      $this->connectS();    }    $func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query') ?      'mysql_unbuffered_query' : 'mysql_query';    $query = $func($sql, $this->linkr);    $this->querynum++;    return $query;  }  function fetch_array($query, $result_type = MYSQL_ASSOC) {    return @mysql_fetch_array($query, $result_type);  }  function fetch_row($query) {    $query = mysql_fetch_row($query);    return $query;  }  function fetch_One($sql) {    $query = $this->query($sql);    return $this->fetch_row($query);  }  /* 獲取分頁方法 */  function fetch_page($sql, $pagenum) {    $page = intval($_GET['page']);    $query = $this->query($sql);    $countnum = $this->num_rows($query);    $countpage = ceil($countnum/$pagenum);    if($page<1) {      $page=1;    }    if($page>$countpage) {      $page=$countpage;    }    $limitstart = ($page-1)*$pagenum;    /* 獲取數據結果集 */    for ($i=0; $i<($limitstart+$pagenum); $i++) {      if($i>=$countnum) {        break;      }      if($i>=$limitstart) {        $result[] = $this->fetch_array($query);      } else {        $this->fetch_array($query);      }    }    /* 生成url */    $url = $_SERVER['QUERY_STRING'];    $url = preg_replace("/&?page=[0-9]+/i","",$url);    $array['countnum'] = $countnum;    $array['countpage'] = $countpage;    $array['result'] = $result;    $array['page'] = $page;    if($page>1) {      $array['preurl'] = "?".$url."&page=".($page-1);      $array['prepage'] = $page-1;    } else {      $array['preurl'] = "?".$url."&page=1";      $array['prepage'] = 1;    }    if($page<$countpage) {      $array['nexturl'] = "?".$url."&page=".($page+1);      $array['nextpage'] = $page+1;    } else {      $array['nexturl'] = "?".$url."&page=".$countpage;      $array['nextpage'] = $countpage;    }    $array['firsturl'] = "?".$url."&page=1";    $array['firstpage'] = 1;    $array['lasturl'] = "?".$url."&page=".$countpage;    $array['lastpage'] = $countpage;    $array['nopage'] = "?".$url."&page=";    return $array;  }  // db write  function queryw($sql, $type = '') {    if(!$this->linkw) {      $this->connectM();    }    $func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query') ?      'mysql_unbuffered_query' : 'mysql_query';    $query = $func($sql, $this->linkw);    $this->querynum++;    return $query;  }  function update($table,$where,$array) {    $whereset = $set = $dot = '';    foreach($array as $key=>$value) {      $set .= $dot." `$key`='$value'";      $dot = ',';    }    $whereset = $dot = '';    foreach($where as $k=>$v) {      $whereset .= $dot." `$k`='$v'";      $dot = ' and ';    }    $sql = "update $table set $set where $whereset";    return $this->queryw($sql);  }  function insert($table,$array) {    $col = $v = $dot = '';    foreach($array as $key=>$value) {      $v .= $dot."'$value'";      $col .= $dot."`$key`";      $dot = ',';    }    $sql = "insert into $table ($col) values ($v)";    if($this->queryw($sql)) {      return $this->insert_id();    } else {      return false;    }  }  function insert_id() {    return ($id = mysql_insert_id($this->linkw)) >= 0 ? $id : $this->result($this->queryw("SELECT last_insert_id()"), 0);  }  // db other  function affected_rows($link) {    return mysql_affected_rows($link);  }  function error($link) {    return (($link) ? mysql_error($link) : mysql_error());  }  function errno($link) {    return intval(($link) ? mysql_errno($link) : mysql_errno());  }  function result($query, $row) {    $query = @mysql_result($query, $row);    return $query;  }  function num_rows($query) {    $query = mysql_num_rows($query);    return $query;  }  function num_fields($query) {    return mysql_num_fields($query);  }  function free_result($query) {    return mysql_free_result($query);  }  function fetch_fields($query) {    return mysql_fetch_field($query);  }  function version($link) {    return mysql_get_server_info($link);  }  function close($link) {    return mysql_close($link);  }}/* 測試例子 //* $dbarray[] = array('localhost','bevin','password','test');* $dbarray[] = array('ilaopo.net','root','password','test');* $dbarray[] = array('192.168.1.77','cxh','password','test');* $newdb = new mysqldb($dbarray,'utf8');* $array = array('name' => date("Y-m-d H:i:s"));* $id = $newdb->insert("test",$array);* $result = $newdb->fetch_page("select * from test order by id desc",'10');* print_r($result);* $id = $newdb->insert("test",$array);* echo $id;*/

 

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 德江县| 泰顺县| 永德县| 邹城市| 民勤县| 杭锦旗| 嘉峪关市| 平远县| 绥滨县| 东光县| 当雄县| 漾濞| 闻喜县| 合阳县| 永顺县| 姚安县| 青海省| 南部县| 合山市| 东海县| 抚宁县| 涟水县| 阿合奇县| 建瓯市| 大邑县| 青神县| 淮安市| 资溪县| 新余市| 信阳市| 金昌市| 富蕴县| 元朗区| 页游| 临颍县| 古丈县| 松桃| 海门市| 河津市| 盘山县| 漳平市|