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