PHP code<?php
/
// SpeedPHP中文PHP框架, Copyright (C) 2008 - 2010 SpeedPHP.com //
/
/**
* SAE中MySQL数据库的驱动支持
*
* SAE是Sina App Engine(新浪应用引擎)的缩写,SAE是一个分布式web应用开发运行的服务平台,
* 其不仅仅包含创建、部署web应用的简单交互,更涉及一整套大规模分布式服务的解决方案。
*
* db_sae 封装了SAE提供的SaeMysql类的驱动操作。
*/
class db_sae {
/**
* 数据库链接句柄
*/
public $conn;
/**
* 执行的SQL语句记录
*/
public $arrSql;
/**
* 按SQL语句获取记录结果,返回数组
*
* @param sql 执行的SQL语句
*/
public function getArray($sql)
{
$this->arrSql[] = $sql;
$result = $this->conn->getData($sql);
if( $this->conn->errno() )spError("{$sql}
执行错误: " . $this->conn->error());
return $result;
}
/**
* 返回当前插入记录的主键ID
*/
public function newinsertid()
{
return $this->conn->lastId();
}
/**
* 格式化带limit的SQL语句
*/
public function setlimit($sql, $limit)
{
return $sql. " LIMIT {$limit}";
}
/**
* 执行一个SQL语句
*
* @param sql 需要执行的SQL语句
*/
public function exec($sql)
{
$this->arrSql[] = $sql;
$result = $this->conn->runSql($sql);
if( $this->conn->errno() )spError("{$sql}
执行错误: " . $this->conn->error());
return $result;
}
/**
* 返回影响行数
*/
public function affected_rows()
{
return FALSE; // SAE环境暂时无法获取影响行数
}
/**
* 获取数据表结构
*
* @param tbl_name 表名称
*/
public function getTable($tbl_name)
{
return $this->getArray("DESCRIBE {$tbl_name}");
}
/**
* 构造函数
*
* @param dbConfig 数据库配置
*/
public function __construct($dbConfig)
{
if(TRUE == SP_DEBUG)sae_set_display_errors(TRUE);
$this->conn = new SaeMysql();
if( $this->conn->errno() )spError("数据库链接错误 : " . $this->conn->error());
$this->conn->setCharset("UTF8");
}
/**
* 对特殊字符进行过滤
*
* @param value 值
*/
public function __val_escape($value, $quotes = FALSE) {
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);
return '\''.$this->conn->escape($value).'\'';
}
/**
* 析构函数
*/
public function __destruct()
{
@$this->conn->closeDb();
}
/**
* getConn 取得Sae MySQL对象
* 为了更好地使用Sea提供MySQL类,getSeaDB函数将返回Sae MySQL对象供开发者使用
*/
public function getConn()
{
return $this->conn;
}
}