Discuz!X/數據庫 DB:: 函數操作方法

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)代替,第二個你可以用實實在在的表明,第三個的話你可以吧數值計算出來后填進去,這樣的話應該就不會出現問題了

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容