EasyDBPHP 數(shù)據(jù)庫操作類
EasyDB是一個基于PDO的數(shù)據(jù)庫操作類,它使用了PDO的精髓--預編譯--的思想,從而在根源上杜絕SQL注入的危險。
現(xiàn)在網(wǎng)上的大多數(shù)據(jù)庫封裝類,甚至一些知名的框架都僅僅只是包裝一下數(shù)據(jù)庫的操作,內(nèi)部還是使用拼裝字符串的方式執(zhí)行語句!
這也太LOW了!而且為了防止SQL注入,還為此增加了超多的格式驗證和數(shù)據(jù)過濾,驗證影響代碼維護和執(zhí)行的效率。
而EasyDB是優(yōu)雅的,它繼承自PDO,沒有破壞PDO的任何方法,只是在此基礎上增加一些易于使用操作方法和簡單的鏈式操作,
它的的設計初衷就是完善和簡化MySQL等數(shù)據(jù)庫的相關操作。引入它,你仍可以直接像使用PDO那樣使用它。
##使用方法##
在你的項目中引入EasyDB.php文件之后,你就可以像這樣使用
$config = array( 'host' => '127.0.0.1',//數(shù)據(jù)庫連接ip,默認本機 'port' => 3306,//端口號,默認3306 'username' => 'root',//用戶名,默認root 'password' => '',//密碼,默認空 'dbname' => 'test',//數(shù)據(jù)庫名字 'charset' => 'utf8'//字符集,默認utf8 );
$db = new EasyDB($config); $sql = 'select * from table where id = ?'; $result = $db->queryOne($sql, array(2));好的,你現(xiàn)在就已經(jīng)獲取到你想要的結(jié)果了!同樣,您也可以這樣寫:
$db = new EasyDB($config);
$sql = 'select * from table where id = :id';
$array = array(
':id' => 2
);
$result = $db->queryOne($sql, $array);
除了常用的增刪改查方法,EasyDB還封裝了一些簡單的鏈式操作,注意:這里只是一些簡單的鏈式操作,對于復雜的語句還是執(zhí)行SQL語句來的痛快。
$db = new EasyDB();
$db->table_select('table')->field('name')->where('id=?')->go(array(2)); 是的。鏈式操作就是這么簡單。
###使用手冊##
提示:一般在SQL語句中使用了占位符,那么緊接著就應該傳入一個綁定數(shù)組,如:
例1:
$sql = 'select * from my'; $result = $db->queryOne($sql);//因為SQL語句中沒有占位符,所以只需要傳入$sql參數(shù)即可例2:
$sql = 'select * from my where id=?'; $result = $db->queryOne($sql, array(4));//這里的第二個參數(shù)array(4)就是將數(shù)組中的值4傳給之前占位的?例3:
$sql = 'select * from my where name=? and age=?';
$result = $db->queryOne($sql, array('blue', 18));//這里的第二個參數(shù)array('blue', 18)的值分別對應SQL語句中的兩個? 例4:
$sql = 'select * from my where name=:name and age=:age'; $data = array( ':name' => 'blue', ':age' => '18 ); $result = $db->queryOne($sql, $data);//這是另外一種占位方式
例1:
$sql = 'select * from my where id=?'; $result = $db->queryOne($sql, array(4));例2:
$sql = 'select * from my'; $result = $db->queryAll($sql);其中queryOne()返回一維數(shù)組(即一條記錄),queryAll()返回二維數(shù)組(即多條記錄)
對于/insert/delete/update,可以這樣使用:
例1:
$sql = 'insert into table set name=? , age=?';
$db->querySql($sql, array('blue', 18)); 例2:
$sql = 'update table where id=?'; $db->querySql($sql, array(4));一些復雜的語句,可以直接這樣使用:
$sql = '....';//復雜的語句 $stmt = $db->queryObj($sql);//這里會返回一個SQL語句對象然后就可以執(zhí)行一些操作,如 $stmt->rowCount();
再次提醒:EasyDB是直接繼承于PDO的,所以就算EasyDB不能滿足你的使用,直接用PDO的方法是完全可以的。
如果你喜歡簡化的方式使用SQL,那就可以這樣:
對于select:
$data = array(
':name' => 'blue',
':age' => '18
);
$db->table_select('table')->where('name=:name and age=:age')->go($data);//對于查詢,使用鏈式的方式 對于insert:
$data = array(
'name' => 'blue',
'age' => '18
);
$db->insert('table', $data);//$data中的鍵為數(shù)據(jù)庫字段名,值為對應的數(shù)值 對于delete:
$where = array(
'name' => 'blue',
'age' => '18
);
$db->delete('table', $where);//$where之間的關系為and 對于update:
$where = array(
'id' => 4
);
$data = array(
'name' => 'blue',
'age' => '18
);
$db->update('table', $data, $where);//$where之間的關系為and 如果insert/update/delete的條件比較復雜,可以使用鏈式方式,如:
$data = array(
':name' => 'blue',
':age' => '18,
':source' => 100
);
$db->table_update('table')->where('name=:name or age=:age')->setdata('source=:source')->go($data);
另外EasyDB還獨立了一個方法,count(),用于計算條目總數(shù),如:
$db->count('table');//table表的總條目
$db->count('table', 'age=?' , array(18));//符合條件的總條目
好了,具體的一些方法大家可以直接看源碼,我在其中都有注釋,如果有什么問題可以直接微博@deng-dev (http://weibo.com/fensiyun)
評論
圖片
表情
