在框架里,mysql类是一个封装的比较完整的类,TP框架中,通过大量的简化连接操作,极大的提升了开发效率,但是封装的越完善的类,其效率往往比较低下。
这里封装了一个简单的mysql类(简单到只有一个select一个内置方法)因为除了读取之外,其余的几个操作,比如增加,删除,改动得到的返回结果只有正确或者错误俩个,所以数据库操作可以分为俩类,一类是不是逻辑值的另一类是逻辑值的。
下面的一个简单方法主要实现的封装:(读写服务器的分离,读取是在副服务器上,增加删除修改在主服务器上,从服务器根据主服务器的数据改动复制主服务器的数据结构)
//全局变量配置,自动加载的时候,需要加载进去
$config = array(
"DB_HOST"=>"127.0.0.1",
"DB_USER"=>"root",
"DB_PWD"=>"root",
"DB_NAME"=>'onethink',
"SLAVE"=>array(
"DB_HOST"=>"127.0.0.1",
"DB_USER"=>"root",
"DB_PWD"=>"root",
"DB_NAME"=>'yyy'
)
);
//封装的主从读取类
class Dbmysql {
public function connect($type=1) {
global $config;
//将全局变量里的大写键值配置全部转化成小写识别
$setConfig = array_change_key_case($config);
$setConfig['slave']=array_change_key_case($config['SLAVE']);
//如果是读取列表,用第二种方式,其他的查询语句用第一种方式,区分数据库的连接
if($type==1) {
$host = $setConfig['db_host'];
$username = $setConfig['db_user'];
$passwd = $setConfig['db_pwd'];
} else {
$host = $setConfig['slave']['db_host'];
$username = $setConfig['slave']['db_user'];
$passwd = $setConfig['slave']['db_pwd'];
}
$con = mysql_connect($host,$username,$passwd);
if($type&&$con){
mysql_select_db($setConfig['db_name'],$con);
} else {
mysql_select_db($setConfig['slave']['db_name'],$con);
}
return $con;
}
//循环列表读取所有的字段,读取的数据库连接是用第一种方式
public function getAll($sql) {
$res = $this->query($sql,$this->connect(0));
while($r = mysql_fetch_assoc($res))
{
$rtarr[]=$r;
}
return $rtarr;
}
//执行sql语句。除了读取,其余的方式都是用执行的方式
public function query($sql,$con) {
$con = $this->connect(1);
$res = mysql_query($sql,$con);
return $res;
}
}
//运行结果进行测试
$m = new Dbmysql();
$query = "select id,action_id,create_time from onethink_action_log limit 20";
$a = $m->getAll($query);
print_r($a);
转载于:https://my.oschina.net/xiongyuanliang/blog/544582