`
dongbei
  • 浏览: 5731 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

最近在新浪的云平台中做应用 为SAE写的一个mysql操作类

阅读更多
用了这个类,将来如果把应用迁出,只需要把这个类修改一下就可以了。最近在新浪的云平台(SAE,http://sae.sina.com.cn)中做应用,本来使用SAE提供的mysql操作类SaeMysql(http://apidoc.sinaapp.com/sae/SaeMysql.html),但是有些不方便:

1、SaeMysql没有提供完整的增删查改方法,插入数据、删除数据、更新数据都只能自己写完整的sql然后在使用runSql 方法执行;

2、要先初始化$mysql = new SaeMysql();,以后要在其它函数内进行mysql操作的话,都不能忘了把$mysql 列入全局变量;

3、我不赞成在具体的业务代码中直接使用SAE提供的类,以后要是把应用迁移出SAE,会比较麻烦。

所以我自己把SaeMysql重新封装了一下,自己写了个mysql操作类。

代码如下:

//by kuiGG  www.errenzhuan.cc
class kuigg_Db {
function tbname($tb) {
return “kuigg_{$tb}”;
}
function getdata ($arr , $separator = ‘,’) {
$str = $s = ”;
foreach ($arr as $k => $v) {
$str .= $s.”`{$k}`=’{$v}’”;
$s = $separator;
}
return $str;
}
function count ($tb , $fields = ‘*’ , $terms = ”){
$o = & self::in();
$tb= self::tbname($tb);
$where = empty($terms) ? ’1′ : $terms;
$query = “select count({$fields}) from `{$tb}` where  {$where}”;
return $o->getVar($query);
}
function fetchdata ($tb , $fields = ‘*’ , $terms = ”){
$o = & self::in();
$tb= self::tbname($tb);
$data = array();
$query = “select {$fields} from `{$tb}` {$terms}”;
return $o->getData($query);
}
function fetchrow ($tb , $fields = ‘*’ , $terms = ”){
$o = & self::in();
$tb= self::tbname($tb);
$data = array();
$query = “select {$fields} from `{$tb}` {$terms}”;
return $o->getLine($query);
}
function fetchitem ($tb , $field , $terms = ”){
$o = & self::in();
$tb= self::tbname($tb);
$data = array();
$query = “select {$field} from `{$tb}` {$terms}”;
return $o->getVar($query);
}
function insert($tb, $arr,  $getinsertid = false, $replace = false) {
$o = & self::in();
$tb= self::tbname($tb);
$data = self::getdata($arr);
$cmd = $replace ? ‘REPLACE INTO’ : ‘INSERT INTO’;
$silence = $silence ? ‘SILENT’ : ”;
$query = “{$cmd} `{$tb}` SET {$data}”;
$return = $o->runSql($query);
return $getinsertid ? $o->lastId() : $return;
}
function insert_id() {
$o = & self::in();
return $o->lastId();
}
function update($tb, $arr,  $terms = NULL , $getarows = false , $low_priority = false) {
$o = & self::in();
$tb= self::tbname($tb);
$data = self::getdata($arr);
$cmd = “UPDATE “.($low_priority ? ‘LOW_PRIORITY’ : ”);
$where = empty($terms) ? ’1′ : $terms;
$query = “{$cmd} `{$tb}` SET {$data} WHERE {$where}”;
$return = $o->runSql($query);
return $getarows ? $o->affectedRows() : $return;
}
function delete($tb, $terms = NULL,$getarows = false, $limit = 0) {
$o = & self::in();
$tb = self::tbname($tb);
$where = empty($terms) ? ’1′ : $terms;
$query = “DELETE FROM `{$tb}` WHERE {$where} “.($limit ? “LIMIT {$limit}” : ”);
$return = $o->runSql($query);
return $getarows ? $o->affectedRows() : $return;
}
function affected_rows() {
$o = & self::in();
return $o->affectedRows();
}
function query($query) {
$o = & self::in();
return $o->runSql($query);
}
function &in() {
static $object;
if(empty($object)) {
$object = new SaeMysql();
}
return $object;
}
}
下载地址:http://www.kuigg.com/attachments/2011/10/kuigg_Db.rar

这个类不需要实例化,调用里面的方法的时候只需要以kuigg_Db::function的形式就可以。

下面解释一下这里面的几个方法:

tbname:这是处理表名的方法,给表明增加前缀用。

重点是提供了完整 增删查改方法:

增:insert(tb,$arr,$getinsertid = false,$replace = false)

需要提供的几个参数分别是$tb:需要插入的表名;$arr:把插入的数据按照key=字段名,value=值的形式构造的数组;$getinsertid:是否获取新插入的id,默认为false不获取,如果设为true就会返回id值;$replace:是否以替代方式插入,默认为false,一般也用不到。

示例:

$arr = array(‘user’ => ‘kuigg’ , ‘email’ => ‘i@kuigg.com’ , ‘website’ => ‘http://www.kuigg.com’);
$uid = kuigg_Db::insert(‘user’, $arr, true);
删:delete(tb,$terms = NULL,getarows = false,$limit = 0)

需要提供的几个参数分别是$tb:需要删除数据的表名;$terms:删除的条件;$getarows:是否获取被删除的行数,默认为false不获取,如果设为true就东北二人转会此次操作删除的行数;$limit:删除的行数,默认0即删除所有符合条件的行。

示例:

$rownum = kuigg_Db::delete(‘user’, “`uid` = ’1′”, true);
查:提供了4个方法:

fetchdata ($tb , $fields = ‘*’ , $terms = ”)
fetchrow ($tb , $fields = ‘*’ , $terms = ”)
fetchitem ($tb , $field , $terms = ”)
count ($tb , $fields = ‘*’ , $terms = ”)
分别可以取得多维数组、单维数组、单项值、统计数目。

改:update(tb,$arr,$terms = NULL ,$getarows = false ,$low_priority = false)

需要提供的几个参数分别是$tb:需要更新数据的表名;$terms:需要更新的条件;$getarows:是否获取更新的行数,默认为false不获取,如果设为true就会此次操作更新的行数。

$arr = array(‘user’ => ‘kuigg’ , ‘email’ => ‘i@kuigg.com’ , ‘website’ => ‘http://www.kuigg.com’);
$rownum = kuigg_Db::update(‘user’, $arr, “where uid = ’1′ “, true);
用了这个类,将来如果把应用迁出,只需要把这个类修改一下就可以了。
分享到:
评论

相关推荐

    SAE平台的MySQL数据库及其应用.pdf

    新浪云平台SAE(Sina App Engine)是一款PaaS(Platform as a Service)服务,为开发者提供了一个包含MySQL数据库在内的全面Web应用开发环境。MySQL是一个广泛使用的开源关系型数据库管理系统,特别适合轻量级Web...

    sina云平台 sae springmvc框架

    在IT行业中,新浪云平台(Sina App Engine,简称SAE)是一个流行的云计算服务平台,它为开发者提供了一站式的应用托管解决方案。SAE是新浪公司推出的一款基于云计算技术的PaaS(Platform as a Service)产品,旨在...

    在SAE平台上使用SSH(struts,spring,hibernate)

    在SAE(Sina App Engine)平台上使用SSH(Struts、Spring、Hibernate)是一个常见的Web应用开发场景。这个过程涉及到三个关键的技术栈:Struts作为MVC框架负责控制层,Spring提供服务层和依赖注入,而Hibernate则...

    新浪SAE云平台下使用codeigniter的数据库配置

    在新浪SAE(新浪云计算平台)云平台上部署使用CodeIgniter框架时,数据库配置是一个重要的步骤,因为SAE在文件权限方面做了特定的限制,会影响到CodeIgniter框架的一些默认行为,特别是数据库缓存目录的权限问题。...

    PHP实例开发源码—Emlog for SAE 适合新浪sae使用的个人博客系统 移植版.zip

    Emlog for SAE 是一个基于PHP开发的个人博客系统,专为新浪SAE(Sina App Engine)平台设计。这个移植版使得用户可以在新浪SAE上便捷地搭建自己的博客,无需自行购买服务器或进行复杂的服务器配置。下面我们将深入...

    PHP实例开发源码—PHP+excel通用成绩查询系统 SAE版.zip

    SAE是新浪提供的一个云计算平台,它为开发者提供了便捷的PHP运行环境,适合快速部署和管理Web应用。 这个系统的核心功能是处理Excel文件中的成绩数据,并提供查询接口。Excel文件作为一种广泛使用的电子表格格式,...

    基于PHP的DWZ php短网址源码For SAE版.zip

    【标题】"基于PHP的DWZ php短网址源码For SAE版.zip"指的是一个专为新浪SAE(Sina App Engine)平台设计的PHP短网址应用源代码。DWZ,全称“Dynamic Website Zone”,是一款流行的开源PHP框架,常用于快速开发Web...

    基于PHP的excel通用成绩查询系统SAE版源码.zip

    SAE是新浪云提供的一个基于云计算的服务平台,它支持PHP语言,为企业和个人开发者提供了便捷的Web应用部署和管理服务。 该系统的核心功能是处理和查询Excel文件中的成绩数据,这在教育、培训机构或者企业内部进行...

    基于PHP的DoitPHP框架SAE版源码.zip

    这款框架的SAE(Sina App Engine)版本是针对新浪云平台优化的,旨在充分利用SAE提供的服务和特性。在分析这个框架的源码时,我们可以深入理解PHP编程、MVC模式、依赖注入以及云平台开发等方面的知识。 1. PHP基础...

    淘宝自动发货源码|新浪sae自动发货系统安装|淘宝API接口

    SAE是新浪提供的一个PaaS(Platform as a Service)平台,开发者无需关心服务器运维,只需关注业务代码即可。通过合理利用这些文件和淘宝API,可以构建出一套完整的自动发货解决方案,提高电商运营效率。

    php实现在新浪云中使用imagick生成缩略图并上传的方法

    3. SAE Storage类的使用:SAE Storage类用于在新浪云环境中实现文件的上传和管理。开发者可以使用SAE Storage类来上传图片到指定路径,获取文件的URL链接,从而将生成的缩略图存储到新浪云上。 4. 文件上传和存储...

    基于PHP的一麦短网址清新版(支持SAE环境)源码.zip

    同时,它强调了该源码能够运行在SAE平台上,SAE是新浪云提供的一个PaaS(Platform as a Service)平台,提供了便捷的Web应用部署和管理服务。 【标签】"PHP" 表明这个项目主要涉及的是PHP编程技术,包括但不限于PHP...

    httpclient相关的JAR包4.1.2

    描述中提到“兼容新浪的SAE服务器”,这意味着这个特定的HttpClient版本已经被验证可以在新浪云应用引擎(Sina App Engine,简称SAE)上运行。SAE是新浪提供的一种基于云计算的服务,开发者可以在这个平台上部署和...

    java的struts架构连接数据库入门手册

    7. 云平台部署:虽然在入门手册中较少涉及,但是掌握将应用部署到云平台(如SAE)的技术也是非常重要的。这通常涉及到对云平台服务的理解,以及如何配置应用以适应云环境的特定要求。 通过上述步骤,可以完成一个...

    基于ARM Linux的公交一卡通系统设计.pdf

    在软件开发方面,系统采用了SAE(新浪云应用引擎)平台,提供了基于MySQL的数据库服务和在线编辑器。开发者可以使用PHP语言编写代码,通过SaeMysql类与数据库建立连接,执行SQL查询,并将结果显示在HTML表格中。例如...

    ThinkPHP_3.2.zip_thinkPHP3.2_thinkphp3.2..3

    7. 云平台支持:ThinkPHP3.2兼容SAE(新浪应用引擎)等云平台,能够轻松部署到云端,适应互联网时代的开发需求。 三、核心组件 1. index.php:入口文件,所有请求都会通过这个文件进入,进行路由分发和应用初始化。...

    php 类似微博简单实现

    3. **sae_app_wizard.xml** - 这可能与新浪SAE(Sina App Engine)有关,SAE是一个基于云的PaaS平台,开发者可以将CI应用部署在SAE上。这表明项目可能是在SAE平台上运行的。 4. **system** - CI框架的核心系统目录,...

    基于云服务器的微信在线测试系统.pdf

    基于云服务器的微信在线测试系统是一类利用微信平台、云服务器技术以及相关编程语言和数据库技术实现的在线考试服务平台。这种系统在数字化信息快速发展的背景下,适应了高等教育环境中对于在线考核的需求,降低了...

    基于PHP的CodeIndexforSAE代码检索工具php版源码.zip

    【标题】"基于PHP的CodeIndexforSAE代码检索工具php版源码.zip" 提供的是一个使用PHP语言开发的代码检索工具,专为百度云服务平台(SAE,即Simple App Engine)设计。这个工具的核心功能是帮助开发者快速地在大量的...

Global site tag (gtag.js) - Google Analytics