sae mysql函数_为SAE写的一个mysql操作类

最近在新浪的云平台(SAE,https://sae.sina.com.cn)中做应用,本来使用SAE提供的mysql操作类SaeMysql(https://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;

}

}

下载地址:https://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’ => ‘https://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’ => ‘https://www.kuigg.com’);

$rownum = kuigg_Db::update(‘user’, $arr, “where uid = ’1′ “, true);

用了这个类,将来如果把应用迁出,只需要把这个类修改一下就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值