欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【为SAE写的一个mysql操作类】,下面是详细的分享!
为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.kuigg.com
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);
用了这个类,将来如果把应用迁出,只需要把这个类修改一下就可以了。
本文来自覃伟帆博客 原文链接:http://www.kuigg.com/sae-mysql-class 转载请保留 谢谢
以上所分享的是关于为SAE写的一个mysql操作类,下面是编辑为你推荐的有价值的用户互动:
相关问题:帮忙做一个MySQL数据库操作的作业
答:一、数据库操作示例: 1、创建数据库和表 drop database if exists mysqlDB; create database mysqlDB; use mysqlDB; create table dept ( deptno int primary key auto_increment, dname varchar(14) unique not null, loc varchar(10) )ENGINE... >>详细
相关问题:新浪SAE服务器的 saemysql类怎么引用到php中?
答:不用引入文件,直接用。 代码示例: >>详细
相关问题:新浪SAE的 MYSQL 基本操作
答:建议采用ThinkPHP SAE框架(在应用里面查找,免费开源的),可以轻松解决你的问题。 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
