本篇對資料庫操作函數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)代替,第二個你可以用實實在在的表明,第三個的話你可以吧數值計算出來後填進去,這樣的話應該就不會出現問題了
本篇對函數操作進行總結和整理,更多相關知識請關注php中文網。
相關推薦:
以上是Discuz!X/資料庫 DB:: 函數操作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!