程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 為SAE寫的一個mysql操作類

為SAE寫的一個mysql操作類

編輯:關於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’ => ‘[email protected]’ , ‘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’ => ‘[email protected]’ , ‘website’ => ‘http://www.kuigg.com’);
$rownum = kuigg_Db::update(‘user’, $arr, “where uid = ’1′ “, true);

用了這個類,將來如果把應用遷出,只需要把這個類修改一下就可以了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved