在system/application/config 文件夾和裏面的config文件裏已經配置了參數web
$active_group = "default";
$db['default']['hostname'] = ""; hostname: 你的數據庫的位置, 舉例來講, 'localhost' 或 IP 地址
$db['default']['username'] = ""; username和password: 使用者名稱和密碼必須有充分的權限,容許你的網站存取數據庫中的數據。
$db['default']['password'] = "";
$db['default']['database'] = ""; database: 你的數據庫的名字, 舉例來講, 'websits'
$db['default']['dbdriver'] = ""; dbdriver: 你正在使用的數據庫的類型 - CI可受的有選項有MySQL、MySQLi、 Postgre SQL、ODBC和MS SQL數據庫
CI中第一次鏈接數據庫,在控制器或模型的構造函數裏輸入如下語句
$this->load->database();
就不須要重複鏈接, 在那個控制器或模型就能夠作任意屢次的查詢。數組
查詢操做(等同select)
方法一:
$query = $this->db->get('sites'); //sites爲表名
這是一個「select *」查詢,目標是site表。換句話說,它取回全部的行
也可用下面這種方式寫:
$this->db->from('sites');
$query = $this->db->get();
若是想要獲得特定的列,而不是所有列,這樣作:
$this->db->select('url','name','clientid');//'url','name','clientid'爲列名
$query = $this->db->get('sites');
若是排序:
$this->db->select('url','name','clientid');//'url','name','clientid'爲列名
$this->db->orderby("name", "desc");
$query = $this->db->get('sites');
若是想要限制返回的行數,好比想要最初五個結果
$this->db->select('url','name','clientid');//'url','name','clientid'爲列名
$this->db->orderby("name", "desc");
$this->db->limit(5);
$query = $this->db->get('sites');
寫where語句
==的狀況
$this->db->where('clientid', '1'); //clientid屬性 "1"爲屬性值
!=的狀況
$this->db->where('url !=', 'www.mysite.com');
$this->db->where('id >', '3');
where後幾個條件的能夠寫幾個where 如
$this->db->where('url !=','www.mysite.com');
$this->db->where('id >', '3');
WHERE…OR的狀況
$this->db->where('url !=','www.mysite.com' );
$this->db->orwhere('url !=','www.anothersite.com' );
鏈接表
$this->db->from('sites');
$this->db->join('people', 'sites.peopleid = people.id');
寫個完整的查詢
$this->db->select('url','name','clientid','people.surname AS client');
$this->db->where('clientid', '3');
$this->db->limit(5);
$this->db->from('sites');
$this->db->join('people', 'sites.clientid = people.id');
$this->db->orderby("name", "desc");
$query = $this->db->get();
方法二:
$this->db->query("SELECT id, name, url FROM sites WHERE 'type' = 'dynamic'");
能夠像下面的語句同樣寫查詢放條件
$condition = "client ='3' AND (type ='dynamic' OR type='static')";
$this->db->where($condition);
注意:雙引號是定義變量的.不要混淆單引號和雙引號.app
顯示查詢結果
在查詢語句後加上下面這句話
$query = $this->db->get();
若是有多個結果,他們被保存在$row對象中,能夠用一個 foreach 循環:
foreach ($query->result() as $row)
{
print $row->url;
print $row->name;
print $row->client;
}
若是咱們只想要一個結果,它能夠做爲一個對象被返回, 或在這裏當作一個$row數組
if ($query->num_rows() > 0)
{
$row = $query->row_array();
print $row['url'];
print $row['name'];
print $row['client'];
}函數
增長數據(等同insert)
方法一:先建個數組,把要insert的值放在數組裏.以下:其中url/name/clientid/type均爲數據表屬性值
$data = array(
'url' => 'www.mynewclient.com',
'name' => 'BigCo Inc',
'clientid' => '33',
'type' => 'dynamic'
);
而後使用$this->db->insert('sites', $data); 把數據增長到sites表中.
方法二:使用$this->db->set() 設置每個值
$this->db->set('url', 'www.mynewclinet.com');
$this->db->set('name', 'BigCo Inc');
$this->db->set('clientid', '33');
$this->db->set('type', 'dynamic');
$this->db->insert('sites');網站
更新(等同update)
先定位要更新的記錄,再update
$this->db->where('id', '1');
$this->db->update('sites', $data);
$this->db->set()方式也能夠,和新增數據應該是同樣的.this
CI 提供幾個函數檢查數據庫是否成功執行了相關操做。 最有用的:
$this->db->affected_rows();
在執行insert或update後應該返回 '1'-可是若是我正在update一批記錄的話,可能返回更大的一個整數。url
若是我正在insert一筆新的記錄, 在實際產生它以前,咱們並不知道ID具體的值。若是我須要引用新的記錄的ID, 使用下列語句:
$new_id_number = $this->db->insert_id();spa
刪除(等同delete)
$this->db->where('id', '2');
$this->db->delete('sites');對象