CI框架數據庫操作知識點總結

數據庫配置

CodeIgniter 有一個配置文件讓你存放數據庫連接值,配置文件位於以下路徑:

application/config/database.php

配件文件存放在一個如下格式的一個多維數組裏:

$db['default']['hostname']= "localhost";

$db['default']['username']= "root";

$db['default']['password']= "";

$db['default']['database']= "database_name";

$db['default']['dbdriver']= "mysql";

$db['default']['dbprefix']= "";

$db['default']['pconnect']= TRUE;

$db['default']['db_debug']= FALSE;

$db['default']['cache_on']= FALSE;

$db['default']['cachedir']= "";

$db['default']['char_set']= "utf8";

$db['default']['dbcollat']= "utf8_general_ci";

我們使用多維數組的原因是爲了讓你隨意的存儲多個連接值的設置。

例如我們又定義了一個test數據庫:

$db['test']['hostname']= "localhost";

$db['test']['username']= "root";

$db['test']['password']= "";

$db['test']['database']= "database_name";

$db['test']['dbdriver']= "mysql";

$db['test']['dbprefix']= "";

$db['test']['pconnect']= TRUE;

$db['test']['db_debug']= FALSE;

$db['test']['cache_on']= FALSE;

$db['test']['cachedir']= "";

$db['test']['char_set']= "utf8";

$db['test']['dbcollat']= "utf8_general_ci";

那麼,告訴系統使用"test"組,你可以設置位於該配置文件中的變量: 

$active_group = "test";

注意: "test"的名字是任意的,這可以讓你自由設置,我們的主要連接默認使用"default"這個名字,當然,您可以基於您的項目爲它起一個更有意義的名字。

連接你的數據庫有兩種方法:

自動連接

“自動連接” 功能將在每個一頁面加載時被自動實例化數據庫類。要啓用“自動連接”,可在如下文件中的 library 數組裏添加 database:

application/config/autoload.php 即:$autoload['libraries'] = array('database');

手動連接

如果僅僅是一部分頁面要求數據庫連接,你可以在你有需要的函數裏手工添加如下代碼或者在你的類裏手工添加以供該類使用。

$this->load->database();

然後在控制器或模型中使用如下語法操作:

$this->db->XXX方法;

注:數據庫連接也可以在模型中進行一些定義,如:$this->load->model('Model_name', '', TRUE);這裏第三個參數爲TRUE就是自動連接數據庫了,此時,即使你在模型中沒有連接數據庫,程序也會正常工作。這裏多說兩句,第三個參數也可以是你配置的數據庫數組的名字,這樣做是手動連接指定的數據庫,這個方法的第二個參數是在使用模型前,爲該模型起一個別名。

連接多數據庫

如果你需要同時連接多於一個的數據庫,你可以用以下方式來實現:

$DB1 = $this->load->database('group_one',TRUE);

$DB2 = $this->load->database('group_two',TRUE); 

注意:改變 "group_one" 和 "group_two" 爲你指定了連接屬性的組名 (或者通過上邊說過的連接數組的數組名)。通過設置函數的第二個參數爲TRUE(boolean)來返回一個數據庫對象。當你使用這種方法,你將用對象名來執行操作命令而不是用戶嚮導模式,也就是說,你將用以下方式執行數據庫操作:

$DB1-> XXX方法;

$DB2-> XXX方法;

而不是:

$this->db->XXX方法;

-----------------------------------------------------------

-------------------CI框架增刪改查的方法--------------------

例子中$DB_default是自定義的變量,例子中使用的默認數據庫連接名

插入一條數據:

$DB_default =$this->load->database('default', TRUE);

$data[‘’]=XXX;

$data[‘’]=XXX;

$DB_default->insert('XXX表',$data);

刪除一條數據:

$DB_default =$this->load->database('default', TRUE);

$DB_default->where('XXX字段',XXX);

$DB_default->delete('XXX表');

修改一條數據:

$DB_default =$this->load->database('default', TRUE);

$data[‘’]=XXX;

$data[‘’]=XXX;

$DB_default->where('XXX字段',XXX);

$DB_default->update('XXX表',$data);

查詢一條數據:

$DB_default =$this->load->database('default', TRUE); $DB_default->select(‘xxx字段’);//不填爲查詢所有

$DB_default->where('XXX字段', 'XXX');

$DB_default->limit(XXX數字);

$DB_default->order_by('XXX字段','asc或desc');

$DB_default->group_by('XXX字段');

$DB_default->from('XXX表');

$query=$DB_default->get();

----------------------------------------------------------

上面是採用了CI框架封裝好的方法,我們也可以採用原生態的sql語句配合框架來進行增刪改查

例如:查詢user表的所有數據

$DB_default =$this->load->database('default', TRUE);

$query=$DB_default->query('SELECT* FROM user');

注意,這時的$query是無法直接輸出的,要這樣才能輸出:

$arr =array();

              if($query->num_rows() > 0){

foreach ($query->result_array() as $row) {

                        array_push($arr, $row);

}

              }

return $arr;

        上面這段代碼核心的部分就是result_array()這個方法,我們知道,sql直接查詢出來的結果集並不是數組類型的,CI框架查詢出來的結果集也不是數組類型的,所以必須把他們轉化爲數組類型才能方便應用,result_array()就是CI框架的轉化方法,這裏把每條數據依次壓到了一個自己定義的數組中,之所以這麼做是因爲result_array()這個方法的返回值在某些特殊情況下不是結果集。

還有一些其它類似的方法,這裏只提供方法的功能,具體用法參見CI中國官方網站(http://codeigniter.org.cn/):

result()本函數的別名是 result_object(),該函數執行成功返回一個對象數組,失敗則返回一個空數組

row()該函數將當前請求的第一行數據作爲 object 返回。

row_array()功能與 row() 一樣, 區別在於該函數返回的是一個數組

num_rows()該函數將會返回當前請求的行數。

num_fields()該函數返回當前請求的字段數(列數)

free_result()該函數將會釋放當前查詢所佔用的內存並刪除其關聯的資源標識。


----------------------------------------------------------


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章