CI數據庫操做_查詢構造器類

=================數據庫操做======================
1.數據庫配置:
config/database.php 用戶名 密碼 數據庫php

2 加載數據庫類:$this->load->database();
也能夠自動加載:在$autoload['libraries']中添加值"database"sql

3 使用:$this->db->...數據庫

* 鏈接多個數據庫:
1)在database.php中配置多個數據庫鏈接信息:
$db["default"] = array();
$db["database2"] = array();...數組

2) 在鏈接數據庫時傳入索引("default"或"database2")
3) $obj = $this->load->database("default",true) ,注意第二個參數在操做多個庫時必須寫,返回爲鏈接的標示
4)使用數據庫操做時,使用$obj->....進行操做 函數


* 若是數據庫表中指定了數據庫表前綴,那麼能夠經過$this->db->dbprefix("表名")獲得完整的表名
如:$sql = "select * from ci_user" --> "select * from ".$this->db->dbprefix("user");post


4.執行語句:$this->db->query("語句");
若是用佔位符方式,則query("語句",參數);*多個參數的時候須要使用數組
--查詢綁定
* $sql = "select * from user where uid =? and pwd=?";
$this->db->query($sql,array("lily",123));ui

* $sql = "select * from user where uid in ? and XXX=?";
$this->db->query($sql,array(array(1,3,4),1));

select:返回一個查詢結果集
insert/delete/update:返回true/falsethis

查詢:方法:query()//返回對象
二維數組:$res->result()
二維數組:$res->result_array()
返回一行數據:$res->row()/$res->row(行索引)
返回一行數據:$res->row_array() url

5.經常使用輔助函數:
* $this->db->insert_id();返回自增序列的id
* $this->db->affected_rows();返回受影響的行數
* $this->db->last_query();返回最後一次執行的sql語句
* $this->db->count_all(table);返回表中有多少條數據
* $this->db->insert_string("表名",data);將data插入到表中 -- 生成sql語句
* $this->db->update_string("表名",data,condition);根據condition修改表中的data數據 -- 生成sql語句對象


=============查詢構造器==================
1、 查詢:
1.$this->db->get(表名,限定行數,起始值)
查詢數據表中的數據,返回查詢結果集,等同於$this->db->query("sql");

2.$this->db->get_where(表名,where,limit,offset)
根據指定條件進行查詢

3.$this->db->select(fiels);
指定要查詢出哪些字段,多個字段之間用,分隔,第二個參數設置是否保護字段名,默認爲true

4.連貫操做:
$this->db
->select("字段") //用","隔開
->from("表名")
->where("查詢條件")
1)能夠字符串,
2)也可使用數組array("字段1"=>1,"字段2"=>'zx')-and相連的條件
3)where("字段名",$id)//字段名=$id.若是須要不等於:where("字段名<>",$id)
->or_where("查詢條件")//使用同where,當傳遞數組時用or鏈接
->order_by("排序")
->group_by("分組")
->having("分組後的查詢條件")
->limit(n,m)//n m和數據庫中的limit是相反的:"limit m,n"
->join("要鏈接的表名","鏈接的條件(on....=...)","可選參數:鏈接方式-left right,默認內鏈接")
->get(); //執行
* get以上的方法都是不須要順序,建議你們按sql的語句
* 複雜的語句建議使用query()的方法

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

2、 添加:
頁面顯示----添加表單
$this->load->view("insert");
添加的操做
模型:$this->db->insert("user",$arr);//表名,添加的數據(數組:字段=>值)
返回值:影響行?true/false
控制器:
看錶單傳遞的數據:$this->input->post()
調用模型層中的方法

批量插入:
$this->db->insert_batch(tableName,data) -- data能夠爲二維數組,表示多條數據
返回受影響的行數

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

3、修改:
/*
從列表跳轉到修改頁面
頁面顯示:當前數據的內容(表單)
模型:查詢當前這條數據(須要給定參數id)
控制器: 1)加載模型
2)獲取參數:$this->uri->segment(數字)//參數從index.php以後開始數1,以此類推
例:http://localhost/ci/index.php/user/update/id/1
//但願取到id後的1 ,$this->uri->segment(4)
3)調用模型層中的方法->顯示
不存在數據的時候:提示,跳轉地址:site_url("控制器/方法")
*/

$this->db->update(tableName,data,where); -- data爲一個數組,where能夠是一個字符串
$this->db->replace(tableName,data); -- data中必須包含主鍵或惟一索引,並且數據表中的全部數據都必須出如今data中

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

4、 刪除:
$this->db->delete(tableName,where);//表名,where條件(能夠數組,也能夠字符串)
$this->db->empty_table(tableName);//刪除表中的全部數據,id不會重置,等同於delete
$this->db->truncate(tableName);//清空表,並重置id

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

5、set()
$this->db->set("key","value") 或 $this->db->set(["key"=>"value"])

例:$this->db->set("name","lily")->where()->update(tableName); * insert/update/delete均可以使用

相關文章
相關標籤/搜索