CodeIgniter笔记4
2019獨角獸企業重金招聘Python工程師標準>>>
自動連接數據庫
在使用數據庫之前,我們最好將數據庫進行自動連接:config/autoload.php自動加載?$autoload['libraries']?=?array('database');
?
一些常用函數
選擇數據
$this->db->select();
允許你在SQL查詢中寫?SELECT?部分。
$this->db->where();
$this->db->or_where();
$this->db->where_in();
允許你在SQL查詢中寫?WHERE部分,其余各種where語句請看手冊。
$this->db->get();
運行選擇查詢語句并且返回結果集。可以獲取一個表的全部數據。
$this->db->like();
$this->db->or_like();
$this->db->not_like();
本函數允許你生成?LIKE?子句,在做查詢時非常有用,其余語法請看手冊。
$this->db->order_by();
幫助你設置一個?ORDER?BY?子句。
$this->db->group_by();
允許你編寫查詢語句中的?GROUP?BY?部分:
$this->db->distinct();
為查詢語句添加?"DISTINCT"?關鍵字:
$this->db->having();
允許你為你的查詢語句編寫?HAVING?部分。
$this->db->limit();
限制查詢所返回的結果數量:
?
$this->db->select_max();
為你的查詢編寫一個?"SELECT?MAX(field)"。
$this->db->select_min();
為你的查詢編寫一個?"SELECT?MIN(field)"?。
$this->db->select_avg();
為你的查詢編寫一個?"SELECT?AVG(field)"?。
$this->db->select_sum();
為你的查詢編寫一個?"SELECT?SUM(field)"?。
$this->db->join();
允許你編寫查詢中的JOIN部分。
?
$this->db->count_all_results();
允許你獲得某個特定的Active?Record查詢所返回的結果數量。可以使用Active?Record限制函數,例如?where(),?or_where(),?like(),?or_like()?等等。
?
插入數據
$this->db->insert();
生成一條基于你所提供的數據的SQL插入字符串并執行查詢。你可以向函數傳遞?數組?或一個?對象。
$this->db->insert_batch();
一次插入多條數據,生成一條基于你所提供的數據的SQL插入字符串并執行查詢。你可以向函數傳遞?數組?或一個?對象。
$this->db->set();
本函數使您能夠設置inserts(插入)或updates(更新)值。它可以用來代替那種直接傳遞數組給插入和更新函數的方式。
?
更新數據
$this->db->update();
根據你提供的數據生成并執行一條update(更新)語句。你可以將一個數組或者對象傳遞給本函數。
$this->db->update_batch();
Generates?an?update?string?based?on?the?data?you?supply,?and?runs?the?query.?You?can?either?pass?an?array?or?an?object?to?the?function.?Here?is?an?example?using?an?array:
?
?
刪除數據
$this->db->delete();
生成并執行一條DELETE(刪除)語句。
$this->db->empty_table();
生成并執行一條DELETE(刪除)語句。
$this->db->truncate();
生成并執行一條TRUNCATE(截斷)語句。
?
鏈式方法
鏈式方法允許你以連接多個函數的方式簡化你的語法。考慮一下這個范例:
$this->db->select('title')->from('mytable')->where('id',?$id)->limit(10,?20);
$query?=?$this->db->get();
說明:?鏈式方法只能在PHP?5下面運行。
?
查詢
$this->db->query();
要提交一個查詢,用以下函數:
$this->db->query('YOUR?QUERY?HERE');
query()?函數以object(對象)的形式返回一個數據庫結果集。?當使用?"read"?模式來運行查詢時,?你可以使用“顯示你的結果集”來顯示查詢結果;?當使用?"write"?模式來運行查詢時,?將會僅根據執行的成功或失敗來返回?TRUE?或?FALSE.?
?
轉義查詢
$this->db->escape()這個函數將會確定數據類型,以便僅對字符串類型數據進行轉義。并且,它也會自動把數據用單引號括起來,所以你不必手動添加單引號,用法如下:?
$sql?=?"INSERT?INTO?table?(title)?VALUES(".$this->db->escape($title).")";
?
查詢輔助函數
$this->db->insert_id()??
這個ID號是執行數據插入時的ID。?
$this->db->affected_rows()
當執行寫入操作(insert,update等)的查詢后,顯示被影響的行數。
$this->db->count_all();
計算出指定表的總行數并返回。在第一個參數中寫入被提交的表名。
生成查詢記錄集
result()
該方法執行成功返回一個object?數組,失敗則返回一個空數組。
result_array()
該方法執行成功時將記錄集作為關聯數組返回。失敗時返回空數組。
row()
該函數將當前請求的第一行數據作為?object?返回。
你可以傳遞參數(參數是行的索引)以便獲得某一行的數據。比如我們要獲得第?5?行的數據:?$row?=?$query->row(4);
row_array()
功能與?row()?一樣,?區別在于該函數返回的是一個數組。
?
除此以外,?我們還可以使用下面的方法通過游標的方式獲取記錄:
$row?=?$query->first_row()
$row?=?$query->last_row()
$row?=?$query->next_row()
$row?=?$query->previous_row()
默認情況下他們將返回一個?object,同時你也可以傳遞參數?"array"?以便使用?array?的方式獲取數據
$row?=?$query->first_row('array')
$row?=?$query->last_row('array')
$row?=?$query->next_row('array')
$row?=?$query->previous_row('array')
?
結果集輔助函數
$query->num_rows()
該函數將會返回當前請求的行數。
$query->num_fields()
該函數返回當前請求的字段數(列數):
$query->free_result()
該函數將會釋放當前查詢所占用的內存并刪除其關聯的資源標識。
?
自動連接
“自動連接”?功能將在每個一頁面加載時被自動實例化數據庫類。要啟用“自動連接”,可在application/config/autoload.php中的?library?數組里添加?database:
$autoload['libraries']?=?array('database');
手動連接
如果僅僅是一部分頁面要求數據庫連接,你可以在你有需要的函數里手工添加如下代碼或者在你的類里手工添加以供該類使用。
$this->load->database();
連接多數據庫
如果你需要同時連接多于一個的數據庫,你可以用以下方式來實現:
$DB1?=?$this->load->database('group_one',?TRUE);
$DB2?=?$this->load->database('group_two',?TRUE);
?
表數據
$this->db->list_tables();
返回一個包含當前連接數據庫中所有表名稱的數組。
$this->db->table_exists();
有時,在對某個表執行操作之前,使用該函數判斷指定表是否存在很有用。返回一個布爾值。
?
數據庫工具類
重要提示:??初始化數據庫工具類之前,你的數據庫驅動必須已經運行,因為工具類依賴于此。
加載工具類:?$this->load->dbutil()
一旦初始化完畢,你可以通過?$this->dbutil?對象來訪問成員函數:
?
$this->dbutil->list_databases()
$this->dbutil->database_exists();
$this->dbutil->xml_from_result($db_result)
$this->dbutil->backup()
?
數據庫緩存類
激活緩存需要三步:
1、在服務器上創建一個可寫的目錄以便保存緩存文件。
2、在文件?application/config/database.php?中$db['xxxx']['cachedir']設置其目錄。
3、激活緩存特性,可以在文件?application/config/database.php?中設置全局選項$db['xxxx']['cache_on']='TRUE',也可以用以本頁下面的方法手動設置。
一旦被激活,每一次含有數據庫查詢的頁面被加載時緩存就會自動發生。
?
?
?
當有數據庫更新,我們需要刪除緩存文件
$this->db->cache_delete()
刪除緩存文件與特定網頁。如果你需要清除緩存后,更新您的數據庫
$this->db->cache_delete('/blog',?'comments');
注意,手冊上寫的是?$this->db->cache_delete('blog',?'comments');但根據實際測試應該在控制器名字前加斜杠'/'才能正確執行。
$this->db->cache_delete_all()
清除所有所有的緩存文件。
?
數據庫維護類
注意:??欲初始化數據庫維護類,請確保你的數據庫驅動已經運行,因為該類依賴于數據庫驅動。
使用如下方法載入數據庫維護類:
$this->load->dbforge()
一旦初始化,就可以使用$this->dbforge?對象訪問類中函數:
?
$this->dbforge->create_database('db_name')
允許你創建由第一個參數指定的數據庫。
$this->dbforge->drop_database('db_name')
允許你刪除由第一個參數指定的數據庫。
$this->dbforge->create_table('table_name');
聲明了字段和鍵之后,你就可以創建一個表。
轉載于:https://my.oschina.net/crisslin/blog/115136
總結
以上是生活随笔為你收集整理的CodeIgniter笔记4的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unix平台上OUI启动常见问题
- 下一篇: 如何给网站瘦身?图文并茂的前端性能优化指