CodeIgniter 使用手冊版本 2.1.4


查詢 (Queries)

$this->db->query();

可以使用下面的函數來提交查尋:

$this->db->query('YOUR QUERY HERE');

query() 函數以 object 方式回傳資料庫結果,當使用 "read" 模式來進行查詢的時候, 你可以使用"顯示您的結果"來顯示查詢結果. 當使用寫入查詢的時候,會依據執行成功或者失敗來回傳 TRUE 或 FALSE。 當接受到資料,您可以自行決定查詢語法如下:

$query = $this->db->query('YOUR QUERY HERE');

$this->db->simple_query();

這是 $this->db->query() 簡化版的函數. 它只會在成功或者失敗的時候回傳真(TRUE)/假(FALSE). 它不會回傳資料庫結果集合,也沒有設置查詢定時器,或編譯綁定數據,或存儲您的查詢診對結果。簡單的說,它只是讓你提交查詢。大多數用戶很少會使用此功能.

自訂資料庫字首名稱 (Adding Database prefixes manually)

假如您已經設定資料庫表格的字首名稱,並且希望能自己手動增加,可以參考底下作法.

$this->db->dbprefix('tablename');
// 輸出 prefix_tablename

不管任何理由,您想要在程式中任意修改 prefix 而不用在建立一個新的 connection,請使用底下的方法來達成:

$this->db->set_dbprefix('newprefix');

$this->db->dbprefix('tablename');
// outputs newprefix_tablename

保護標識符號 (Protecting identifiers)

在眾多資料庫中最好保護資料表跟欄位名稱 - 例如在 MySQL 使用反引號 backticks (``). Active Record 查詢都已被自動的保護,如果您需要手動保護的標識符號可以使用:

$this->db->protect_identifiers('table_name');

根據資料庫設定檔裡面的 prefix 設定,此函數會在資料表前面加上 prefix。您可以透過設定第二個參數為 TRUE (boolen) 來啟動 prefix:

$this->db->protect_identifiers('table_name', TRUE);

跳脫查詢(Escaping Queries)

這是一個非常良好的安全去跳脫資料,然後在傳送到資料庫。CodeIgniter 提供兩個方法可以幫助您做到這一點:

  1. $this->db->escape() 此函數決定了可以跳脫的資料型態。它會自動增加單引號(single quotes)在資料旁邊,所以你不必加上單引號: $sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")";
  2. $this->db->escape_str() 此函數可以跳脫任何資料型態。在大多數的情況底下,都是使用上述的函數多於使用此函數。此函數用法如下: $sql = "INSERT INTO table (title) VALUES('".$this->db->escape_str($title)."')";
  3. $this->db->escape_like_str() 此函數可以用在跳脫 SQL Like 語法,像是 wildcards ('%', '_') 在此函數都會被跳多。 $search = '20% raise';
    $sql = "SELECT id FROM table WHERE column LIKE '%".$this->db->escape_like_str($search)."%'";

封裝查詢(Query Bindings)

封裝可以簡化你的查詢語法,讓系統幫忙放入資料為您查詢. 請參照底下範例:

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";

$this->db->query($sql, array(3, 'live', 'Rick'));

該問號會自動改為查詢函數的第二個參數陣列資料值.

使用封裝的第二個好處是系統會自動幫忙轉義跳脫(Escaping Queries)字串,形成較安全的查詢語法。您就不需要手動的處理這些資料; 系統將會自動的幫忙處理.