MYSQL实现主从insert和query分开操作
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,
千家信息网最后更新 2026年10月31日MYSQL实现主从insert和query分开操作
dbConfig = $dbConfig; $this->multi_server = empty ( $this->dbConfig['slave'] ) ? false : true; } /** * 连接数据库方法 * @param type $dbConfig */ public function connect ($db) { $this->dbCurrent = $db; $linkfunction = ( TRUE == $db['persistent'] ) ? 'mysql_pconnect' : 'mysql_connect'; $this->conn = $linkfunction ( $db ['host'], $db ['username'], $db ['password']); if (! $this->conn) { return false; } $re = mysql_select_db($db['dbname'], $this->conn); if(!$re) { return false; } mysql_query ( "SET NAMES '" . $db ['charset'] . "'", $this->conn ); } /** * 初始化数据库连接 * @param type $master */ public function initConnect ($master = true) { if ($master || !$this->multi_server) { if($this->m_link_id){ $this->conn = $this->m_link_id; $this->ping($master); } else { $this->connect ( $this->dbConfig ['master'] ); $this->m_link_id = $this->conn; } } else { if($this->s_link_id){ $this->conn = $this->s_link_id; $this->ping($master); } else { $rand = rand(0, count($this->dbConfig ['slave']) - 1); $this->connect ( $this->dbConfig ['slave'][$rand] ); $this->s_link_id = $this->conn; } } } /** * 按SQL语句获取记录结果,返回数组 * * @param sql 执行的SQL语句 */ public function getArray($sql) { if( ! $result = $this->query($sql) )return FALSE; if( ! mysql_num_rows($result) ) return FALSE; $rows = array(); while($rows[] = mysql_fetch_array($result,MYSQL_ASSOC)){} mysql_free_result($result); array_pop($rows); return $rows; } /** * 返回当前插入记录的主键ID */ public function newinsertid() { return mysql_insert_id($this->conn); } /** * 格式化带limit的SQL语句 */ public function setlimit($sql, $limit) { return $sql. " LIMIT {$limit}"; } /** * 执行一个SQL语句 * * @param sql 需要执行的SQL语句 */ public function exec($sql) { $this->arrSql[] = $sql; $this->initConnect ( true ); return mysql_query($sql, $this->conn); } /** * 执行一个SQL语句,主要用于查询 * @param type $sql * @param type $master default:false 为true:强制读主库;为false:在有从库的的情况下优先读从库,否则读主库 */ public function query ($sql, $master = false) { $this->arrSql[] = $sql; $this->initConnect ( $master ); return mysql_query($sql, $this->conn); } /** * 返回影响行数 */ public function affected_rows() { return mysql_affected_rows($this->conn); } /** * 获取数据表结构 * * @param tbl_name 表名称 */ public function getTable($tbl_name) { return $this->getArray("DESCRIBE {$tbl_name}"); } //防止mysql gone away public function ping($master) { if(!@mysql_ping($this->conn)){ @mysql_close($this->conn); //注意:一定要先执行数据库关闭,这是关键 if($master || !$this->multi_server) { unset($this->m_link_id); } else { unset($this->s_link_id); } $this->initConnect($master); } } /** * 对特殊字符进行过滤 * * @param value 值 */ public function __val_escape($value) { if(is_null($value))return 'NULL'; if(is_bool($value))return $value ? 1 : 0; if(is_int($value))return (int)$value; if(is_float($value))return (float)$value; if(@get_magic_quotes_gpc())$value = stripslashes($value); $this->conn || $this->initConnect(); return '\''.mysql_real_escape_string($value, $this->conn).'\''; } public function escape($value) { if(is_null($value))return 'NULL'; if(is_bool($value))return $value ? 1 : 0; if(is_int($value))return (int)$value; if(is_float($value))return (float)$value; if(@get_magic_quotes_gpc())$value = stripslashes($value); $this->conn || $this->initConnect(); return mysql_real_escape_string($value, $this->conn); } /** * 析构函数 */ public function __destruct() { if( TRUE != @$this->dbCurrent['persistent'] )@mysql_close($this->conn); }}重点在 initConnect($master)方法里,这里决定加载的配置文件中是连接到主库还是从库
语句
数据
数据库
方法
特殊
关键
函数
名称
字符
情况
数据表
数组
文件
格式
结构
结果
这是
重点
强制
影响
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
湖北九亚互联网络科技有限公司
北京路客互联网科技有限公司
互联网核心科技是什么
港股互联网科技股
青岛互联网科技公司
科技互联网公司logo
广西互联网科技公司
上游互联网科技
互联网高科技企业
科技互联网的估值
团飞科技与伯堂互联网服务平台
汽车互联网创新科技园
华服互联网科技官网
南平创想时代互联网科技有限公司
赶超互联网科技 微信多开
和信科技工业互联网
黑科技 体验场景 互联网大会
小米互联网科技园入驻
城市宝互联网科技有限公司
互联网科技数字货币
中智农互联网科技
江苏根荣互联网科技
万易互联网科技
礼当家互联网科技
长亮科技 互联网金融
亿人帮互联网科技
央行互联网金融科技公司
受益于互联网科技的高速发展
云南省自由互联网科技有限公司
互联网的科技体现在哪里