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