首頁 >後端開發 >php教程 >Discuz!X/資料庫 DB:: 函數操作方法

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

jacklove
jacklove原創
2018-05-21 17:30:294578瀏覽

本篇對資料庫操作函數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中文網。

相關推薦:

ThinkPHP框架String類別詳解

##JS基礎-Math陣列Date

#jQuery 能做什麼?
#

以上是Discuz!X/資料庫 DB:: 函數操作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn