DB::table($tablename)獲取正確帶前綴的表名,轉換數據庫句柄,
DB::delete($tablename, 條件,條數限制)刪除表中的數據
DB::insert($tablename, 數據(數組),是否返回插入ID,是否是替換式,是否silent)插入數據操作
DB::update($tablename, 數據(數組)條件)更新操作
DB::fetch(查詢后的資源)從結果集中取關聯數組,注意如果結果中的兩個或以上的列具有相同字段名,最后一列將優先。
DB::fetch_first($sql)取查詢的第一條數據fetch
DB::fetch_all($sql)查詢并fetch
DB::result_first($sql)查詢結果集的第一個字段值
DB::query($sql)普通查詢
DB::num_rows(查詢后的資源)獲得記錄集總條數
DB::_execute(命令,參數)執行mysql類的命令
DB::limit(n,n)返回限制字串
DB::field(字段名, $pid) 返回條件,如果為數組則返回 in 條件
DB::order(別名, 方法)排序
注意事項:所有數據在插入數據庫之前,均需要進行addslashes()處理,以免特殊字符未經轉義在插入數據庫的時候出現錯誤。Discuz!中所有通過 GET, POST, FILE,取得的變量默認情況下已經使用了addslashes()進行了轉義,不必重復進行。如果數據處理必要(例如用于直接顯示),可以使用 stripslashes() 恢復,但數據在插入數據庫之前必須再次進行轉義。緩存文件中,一般對緩存數據的值采用 addcslashes($string, ''\')進行轉義。
最常見的查詢數據庫舉例:
獲取單條數據:
$rs = DB::fetch_first("SELECT * FROM ".DB::table('common_member')." WHERE uid=1");
這里獲取的是UID為1的用戶的數據,但是discuz內還有一個getuserbyuid可以獲取用戶數據
獲取多條數據:
$rs = DB::fetch_all("SELECT * FROM " .DB::table('common_member')." WHERE uid in(1,2,3,4,5,6)");
這里獲取的是UID為1 2 3 4 5 6的用戶的信息
插入數據講解
調用方式:DB::insert()
說明:關于是否是否。只要值為1就是 是,否就直接無視或者留空
舉例:
首先是存在一個表名為pre_test
表內有以下字段:id(遞增) name uid 字段類型就別管了
if(DB::insert('test',array('id'=>NULL,'name'=>'me','uid'=>1))) showmessage("數據插入成功");
說明:這邊的數組的鍵名就是數據表中的字段名,鍵值就是插入的對應字段的值
DB::fetch_all('SELECT * FROM %t WHERE panel=%d', array($this->_table, $panel), 'uid');
DB::fetch_all('SELECT * FROM %t WHERE uid=%d ORDER BY dateline DESC', array($this->_table, $uid), 'bid') : array();
注:
DZ中%號會當做參數,需要你傳入,首先第一個你可以使用DB::table($this->_table)代替,第二個你可以用實實在在的表明,第三個的話你可以吧數值計算出來后填進去,這樣的話應該就不會出現問題了