SAE和BAE以及阿里云的mysql数据库连接串
先说一下通用的连接串吧:
private function getMysqlConnALIYUN(){
$this->link = @mysql_connect($this->dbHost.':'.$this->dbPort, $this->dbUser, $this->dbPass )
or die ( "class_mysql Connect ALY Error!!!");
$conn = mysql_select_db($this->dbName, $this->link) or die("class_mysql SELECT Aliyun db error!!!");
mysql_query("set names '$this->dbCode'");
}
接着,是新浪云sae的连接串,这个比较特殊:
private function getMysqlConnSAE() {
//require_once 'class.MysqlSae.php';
//self::$mInstance = new MysqlSae();//new MysqlSae();
//return true;
$this->link = mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS)
or die ( "Connect KCSAEServer Error!!!". mysql_error());
$conn = mysql_select_db(SAE_MYSQL_DB,$this->link)
or die("Select KCSAEDatabase Failed!!!" . mysql_error($this->link));
mysql_query("set names '$this->dbCode'");
}
最后,百度的连接串:
private function getMysqlConnBAE() {
/*接着调用mysql_connect()连接服务器*/
$this->link = @mysql_connect ("{$this->dbHost}:{$this->dbPort}", $this->dbUser, $this->dbPass, true);
if (!$this->link) {
die("Connect KCBAEServer Failed: " . mysql_error());
}
/*连接成功后立即调用mysql_select_db()选中需要连接的数据库*/
if (! mysql_select_db($this->dbName, $this->link)) {
die("Select KCBAEDatabase Failed: " . mysql_error($this->link));
}
/*至此连接已完全建立,就可对当前数据库进行相应的操作了*/
/*!!!注意,无法再通过本次连接调用mysql_select_db来切换到其它数据库了!!!*/
/* 需要再连接其它数据库,请再使用mysql_connect+mysql_select_db启动另一个连接*/
/**
* 接下来就可以使用其它标准php mysql函数操作进行数据库操作
*/
/*显式关闭连接,非必须mysql_close($this->link);*/
}
为了在不同的环境下不用修改配置文件,能够智能识别连接串,我的配置文件是这样子的(数据库密码你懂的):
if ($_SERVER['SERVER_NAME'] == 'www.dbname.com'){
//阿里云的配置,从ECS数据库链接
$dbArray = array ('type' => 'ALIYUN',
'host' => 'localhost',
'port' => '3306',
'user' => 'wwb',
'pass' => 'wsVGB_ecs',
'name' => 'dbname',
'code' => 'utf8'
);
}elseif(defined('SAE_MYSQL_USER') && SAE_MYSQL_USER!=''){
//新浪SAE的配置,从环境定义的静态常量里取出数据库连接需要的参数
$dbArray = array('type'=>'SAE',
'host'=>SAE_MYSQL_HOST_M,
'port'=>SAE_MYSQL_PORT,
'user'=>SAE_MYSQL_USER,
'pass'=>SAE_MYSQL_PASS,
'name'=>SAE_MYSQL_DB,
'code'=>'UTF8'
);
}elseif(function_exists('getenv') && getenv('HTTP_BAE_ENV_AK')!=''){
//百度BAE的配置,从环境变量里取出数据库连接需要的参数
$dbArray = array('type'=>'BAE',
'host'=>getenv('HTTP_BAE_ENV_ADDR_SQL_IP'),
'port'=>getenv('HTTP_BAE_ENV_ADDR_SQL_PORT'),
'user'=>getenv('HTTP_BAE_ENV_AK'),
'pass'=>getenv('HTTP_BAE_ENV_SK'),
'name'=>'hAEVyBEuUUIFuQZz',
'code'=>'utf8'
);
}else{
//本地测试的配置
$dbArray = array (
'type' => 'LOCAL',
'host' => 'localhost',
'port' => '0',
'user' => 'website',
'pass' => 'website123',
'name' => 'dbname',
'code' => 'utf8'
);
}
这个通用类已经封装好,大概就这样子了,这个封装类经过了好多次优化的了。