//-------stl LIB 中给了一个数据库操作类
class sae_mysql
{
function __construct( $host , $port , $accesskey , $secretkey , $appname , $do_replication )
{
$this->host = ltrim($host, 'ms');
$this->port = $port;
$this->accesskey = $accesskey;
$this->secretkey = $secretkey;
$this->appname =$appname; //$this->appname = 'app_' . $appname; 其实是数据库名称
$this->do_replication = $do_replication;
}
private function connect( $is_master = true )
{
if( $is_master ) $host =$this->host; //$host ='m' .$this->host;
else $host =$this->host; //else $host ='s' .$this->host;
if( !$db = mysql_connect( $host . ':' . $this->port , $this->accesskey , $this->secretkey ) )
{
die('can\'t connect to mysql ' . $this->host . ':' . $this->port );
}
mysql_select_db( $this->appname , $db );
return $db;
}
private function db_any()
{
}
private function db_read()
{
if( isset( $this->db_read ) )
{
mysql_ping( $this->db_read );
return $this->db_read;
}
else
{
if( !$this->do_replication ) return $this->db_write();
else
{
$this->db_read = $this->connect( false );
return $this->db_read;
}
}
}
private function db_write()
{
if( isset( $this->db_write ) )
{
mysql_ping( $this->db_write );
return $this->db_write;
}
else
{
$this->db_write = $this->connect( true );
return $this->db_write;
}
}
public function save_error()
{
$GLOBALS['SAE_LAST_ERROR'] = mysql_error();
$GLOBALS['SAE_LAST_ERRNO'] = mysql_errno();
}
public function run_sql( $sql )
{
$ret = mysql_query( $sql , $this->db_write() );
$this->save_error();
return $ret;
}
public function get_data( $sql )
{
$GLOBALS['SAE_LAST_SQL'] = $sql;
$data = Array();
$i = 0;
$result = mysql_query( $sql , $this->do_replication ? $this->db_read() : $this->db_write() );
$this->save_error();
while( $Array = mysql_fetch_array($result, MYSQL_ASSOC ) )
{
$data[$i++] = $Array;
}
/*
if( mysql_errno() != 0 )
echo mysql_error() .' ' . $sql;
*/
mysql_free_result($result);
if( count( $data ) > 0 )
return $data;
else
return false;
}
public function get_line( $sql )
{
$data = $this->get_data( $sql );
return @reset($data);
}
public function get_var( $sql )
{
$data = $this->get_line( $sql );
return $data[ @reset(@array_keys( $data )) ];
}
public function last_id()
{
$result = mysql_query( "SELECT LAST_INSERT_ID()" , $this->db_write() );
return reset( mysql_fetch_array( $result, MYSQL_ASSOC ) );
}
public function close_db()
{
if( isset( $this->db_read ) )
@mysql_close( $this->db_read );
if( isset( $this->db_write ) )
@mysql_close( $this->db_write );
}
public function escape( $str )
{
if( isset($this->db_read)) $db = $this->db_read ;
elseif( isset($this->db_write) ) $db = $this->write;
else $db = $this->db_read();
return mysql_real_escape_string( $str , $db );
}
public function errno()
{
return $GLOBALS['SAE_LAST_ERRNO'];
}
public function error()
{
return $GLOBALS['SAE_LAST_ERROR'];
}
}
?>
//-----------测试连接的
$host=SAE_MYSQL_HOST_M;
$port=SAE_MYSQL_PORT;
$accesskey=SAE_ACCESSKEY;
$secretkey=SAE_SECRETKEY;
$appname=SAE_MYSQL_DB;
$do_replication= true;
$mysql= new sae_mysql($host , $port , $accesskey , $secretkey , $appname ,$do_replication);
$sql = "SELECT user_name FROM test_user ";
$data = $mysql->get_data( $sql );
print_r("my_name:");
$name=current($data[0]);
print_r($name);
?>
//修改了部分连接类的写发 进行了注释