數據庫操作無非是CRUD,用非裝逼的語言來說就是增刪改查。也許這一節會講的很泛泛,或者很多人看不懂,沒關系,大致的看看,知道是這么回事就好,繼續往后看,后面會講實例,這些枯燥而又抽象的東西可以先跳過,慢慢就會明白了。而且這部分內容CI手冊講的很全面,我也沒什么好方式講的很通俗易懂,索性不重復造那么大的輪子。
連接數據庫
想要操作數據庫,首先要確認已經配置好數據庫連接設置,這點在安裝部分的最下面已經講過,不再重復。
雖然配置好了,但是文件如何加載此類配置?在相應的控制器或者模型里對應的位置添加
$this->load->database();
一般是在模型的構造函數里添加此代碼,這樣只要調用了該模型,所有控制器和該模型內的其他函數都可以連接數據庫。
如果你不知道什么是控制器、模型等,請按我如下操作:
打開 application/models 文件夾新建一個文件 model.php,代碼如下:
<?php
class Model extends CI_Model {
public function __construct()
{
$this->load->database();
}
}
讀取數據庫內容
以上連接數據庫的操作都設置好之后,我們就可以來利用CI自帶的Active Record模式 來讀取數據庫內容了。
$query = $this->db->get('news');
return $query->result_array();
get()是用來獲取數據庫里指定表的內容,沒加限定的where之類的,就是獲取所有內容。
result_array()意思為返回數組形式的結果集,不加array就是返回對象形式的,更詳細的可以參見 Active Record 類 這里不做過多詳解。
return是函數內用來返回結果的操作,也可以賦值、var_dump 等之類操作查看$query->result_array();的內容
我一般習慣這樣寫,比較懶省事:
$query = $this->db->get('news')->result_array();
return $query;
看個人使用喜好了。
插入新數據內容
可以用數組的形式通過$this->db->insert()插入數據,第一個參數為插入數據的表名,第二個參數為數組,鍵名對應數據表字段名,后面是數據。
$data = array(
'title' => 'My title' ,
'name' => 'My Name' ,
'date' => 'My date'
);
$this->db->insert('mytable', $data);
將執行如下SQL語句: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')
這樣寫起來是不是比直接寫sql來的要簡明的多?
更新數據內容
$data = array(
'title' => $title,
'name' => $name,
'date' => $date
);
$this->db->where('id', $id);
$this->db->update('mytable', $data);
生成:
UPDATE mytable
SET title = '{$title}', name = '{$name}', date = '{$date}'
WHERE id = $id
和插入的代碼相比,就多了一個where條件,更新特定條目,不加where就更新所有表內內容了。雖然where和update不在同一行,但是一串數據庫的操作會排在一起執行的,這個不用擔心。
刪除數據內容
$this->db->where('id', $id);
$this->db->delete('mytable');
生成:
DELETE FROM mytable
WHERE id = $id
這里和上面的更新類似,只是加了where條件,沒有數組傳入。
這樣就是基本的數據庫增刪改查操作,這里只是大致的講了下,沒詳細的講解,以后有時間慢慢完善吧,大家可以參見 Active Record 類。
