$this->db->insert_id()
當使用資料庫新增語法,會回傳ID值。
P.S 以下所有範例已設定自動載入 Database('database')。
Step one:model_M.php 檔,資料庫處理,新增資料後,回傳資料庫ID值。
<?php
class Model_M extends CI_Model
{ //建構子
function __construct()
{
parent::__construct();
}
//快速新增
function insert_data($Quick_Insert_Data)
{
$this->db->insert('test',$Quick_Insert_Data);
//回傳ID值
$query=$this->db->insert_id();
return $query;
}
}
?>
Step two:view_V.php 檔,顯示回傳資料庫的ID值。
<!DOCTYPE HTML> <html> <head><title><?php echo $title ; ?></title></head> <body> <h1><?php echo $heading ; ?></h1> <h1> <?php echo "回傳ID值=".$query; ?> </h1> </body> </html>
Step three:control_C.php 檔,程式流程控制。
<?php
class Control_C extends CI_Controller
{
function __construct()
{
parent::__construct();
}
// index 頁面
function index()
{
$data['title'] = "頁面標題TEST";
$data['heading'] = "CI2測試中";
// 載入 model_M.php
$this->load->model('model_M');
// 模擬使用者輸入的資料
$text="text_test";
$address="address_test";
$tel="tel_test";
// 取得資料到 $Quick_Insert_Data
$Quick_Insert_Data=array('text'=>$text,'address'=>$address,'tel'=>$tel);
// 呼叫 model_M.php 的 Quick_Insert_Data 方法
// 將 insert_data() 回傳結果指定給 $data['query']
$data['query'] = $this->model_M->insert_data($Quick_Insert_Data);
// 呼叫 view_V.php , 將資料載入到 view_V.php 顯示出
$this->load->view('view_V', $data);
}
}
?>
Step four:執行結果。
資料庫內容,新增一筆,id 為 5。

$this->db->affected_rows()
當您對資料庫使用新增或者是修改語法(insert,update,etc.),上述會回傳影響筆數。
注意: 在 MySQL 裡面使用 "DELETE FROM TABLE" 語法會回傳零筆資料。 在 database 類別有提供小技巧,它可以正確回傳影響的資料筆數。系統預設將此功能打開,但您可以在資料庫驅動檔案(database driver file)將它關閉。
Step one:直接修改 model_M.php 檔。
<?php
class Model_M extends CI_Model
{ //建構子
function __construct()
{
parent::__construct();
}
//快速新增
function insert_data($Quick_Insert_Data)
{
$this->db->insert('test',$Quick_Insert_Data);
//回傳受影響之筆數
$query=$this->db->affected_rows();
return $query;
}
}
?>
Step two:執行結果,回傳受影響之筆數,因只有新增一筆,所以回傳一筆。

資料庫內容,新增一筆,受影響一筆。
$this->db->count_all()
取得特定表格所有行數。第一個參數請填入指定表格。 參考範例:
echo $this->db->count_all('my_table');
// 產生整數,如 25
Step one:直接修改 model_M.php 檔。
<?php
class Model_M extends CI_Model
{ //建構子
function __construct()
{
parent::__construct();
}
//快速新增
function insert_data($Quick_Insert_Data)
{
$this->db->insert('test',$Quick_Insert_Data);
//回傳資料庫總筆列數(Row)
//test 資料表名稱
$query=$this->db->count_all('test');
return $query;
}
}
?>
Step two:執行結果,回傳資料庫總比列數(Row)。
資料庫內容,共七筆列數(Row)。

$this->db->platform()
得到您使用的資料庫型態,例如(MySQL,MS SQL,Postgres,etc...):
echo $this->db->platform();
Step one:直接修改 model_M.php 檔。
<?php
class Model_M extends CI_Model
{ //建構子
function __construct()
{
parent::__construct();
}
//快速新增
function insert_data($Quick_Insert_Data)
{
$this->db->insert('test',$Quick_Insert_Data);
//回傳資料庫型態
$query=$this->db->platform();
return $query;
}
}
?>
Step two:執行結果,回傳資料庫型態。

$this->db->version()
使用底下語法會得到資料庫版本型號:
echo $this->db->version();
Step one:直接修改 model_M.php 檔。
<?php
class Model_M extends CI_Model
{ //建構子
function __construct()
{
parent::__construct();
}
//快速新增
function insert_data($Quick_Insert_Data)
{
$this->db->insert('test',$Quick_Insert_Data);
//回傳資料庫版本型號
$query=$this->db->version();
return $query;
}
}
?>
Step two:執行結果,回傳資料庫版本型號。
$this->db->last_query()
回傳最後使用的查詢語法(回傳查詢字串,並非是查詢結果)。參考範例:
$str = $this->db->last_query(); // 產生: SELECT * FROM sometable....
Step one:直接修改 model_M.php 檔。
<?php
class Model_M extends CI_Model
{ //建構子
function __construct()
{
parent::__construct();
}
//快速新增
function insert_data($Quick_Insert_Data)
{
$this->db->insert('test',$Quick_Insert_Data);
//回傳最後使用查詢語法
$query=$this->db->last_query();
return $query;
}
}
?>
Step two:回傳最後使用查詢語法,圖部分被截斷。
底下有兩個函數可以幫助簡化撰寫新增(INSERTs)跟修改(UPDATEs)SQL語法。
$this->db->insert_string()
此函數簡化了新增資料SQL語法。它將會回傳正確格式的 Insert SQL 語法。參考範例:
$data = array('name' => $name,'email' => $email,'url' => $url);
$str = $this->db->insert_string('table_name',$data);
第一個參數請填入表格名稱,第二個參數填入要新增的資料陣列. 上述例子會產生如下:
INSERT INTO table_name (name,email,url) VALUES ('Rick','rick@example.com','example.com')
注意: 所有傳到這個函數的值都會自動跳脫(escape),以產生更安全的查詢。
Step one:model_M.php 檔,資料庫處裡。
<?php
class Model_M extends CI_Model
{ //建構子
function __construct()
{
parent::__construct();
}
//快速新增
function insert_data($Quick_Insert_Data)
{
$this->db->insert('test',$Quick_Insert_Data);
$query="insert successful.";
return $query;
}
}
?>
Step two:view_V.php 檔,顯示結果。
<!DOCTYPE HTML> <html> <head><title><?php echo $title ; ?></title></head> <body> <h1><?php echo $heading ; ?></h1> <h1> <?php echo $query; ?> </h1> </body> </html>
Step three:control_C.php 檔,控制流程。
<?php
class Control_C extends CI_Controller
{
function __construct()
{
parent::__construct();
}
// index 頁面
function index()
{
$data['title'] = "頁面標題TEST";
$data['heading'] = "CI2測試中";
// 載入 model_M.php
$this->load->model('model_M');
// 模擬使用者輸入的資料
$text="text_test";
$address="address_test";
$tel="tel_test";
// 取得資料到 $Quick_Insert_Data
$Quick_Insert_Data=array('text'=>$text,'address'=>$address,'tel'=>$tel);
// 呼叫 model_M.php 的 Quick_Insert_Data 方法
// 將 insert_data() 回傳結果指定給 $data['query']
$data['query'] = $this->model_M->insert_data($Quick_Insert_Data);
// 呼叫 view_V.php , 將資料載入到 view_V.php 顯示出
$this->load->view('view_V', $data);
}
}
?>
Step four:執行結果。
$this->db->update_string()
此函數簡化了修改資料的SQL語法。它會回傳正確格式的 Update SQL 語法。參考範例:
$data = array('name' => $name,'email' => $email,'url' => $url);
$where = "author_id = 1 AND status = 'active'";
$str = $this->db->update_string('table_name',$data,$where);
第一個參數為表格名稱,第二個參數填入修改的資料陣列,第三個參數填入 where 條件語法。上述例子會產生如下:
UPDATE table_name SET name = 'Rick',email = 'rick@example.com',url = 'example.com' WHERE author_id = 1 AND status = 'active'
注意: 所有傳到這個函數的值都會自動跳脫(escape),以產生更安全的查詢。
參考:http://www.codeigniter.org.tw/user_guide/database/helpers.html