在 CodeIgniter 框架中,資料庫操作是開發過程中最常見的任務之一。框架內建的資料庫類提供了直觀且強大的介面,讓開發者能夠輕鬆執行查詢、插入、更新等操作,無需撰寫冗長的原生 SQL 連接代碼。
根據 application/config/database.php 的設定載入並初始化資料庫類:
$this->load->database();
載入後,即可在控制器、模型等任何位置透過 $this->db 存取資料庫物件。
$query = $this->db->query('SELECT name, title, email FROM my_table');
foreach ($query->result() as $row) {
echo $row->title;
echo $row->name;
echo $row->email;
}
echo 'Total Results: ' . $query->num_rows();
result() 回傳物件陣列,屬性名對應欄位名(如 $row->title)。
$query = $this->db->query('SELECT name, title, email FROM my_table');
foreach ($query->result_array() as $row) {
echo $row['title'];
echo $row['name'];
echo $row['email'];
}
result_array() 回傳鍵值對陣列(如 $row['title'])。
物件形式:
$query = $this->db->query('SELECT name FROM my_table LIMIT 1');
$row = $query->row();
echo $row->name;
陣列形式:
$query = $this->db->query('SELECT name FROM my_table LIMIT 1');
$row = $query->row_array();
echo $row['name'];
$sql = "INSERT INTO mytable (title, name) VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";
$this->db->query($sql);
echo $this->db->affected_rows();
使用 escape() 方法可自動處理特殊字元,防止 SQL 注入。
配置檔位於 application/config/database.php,採用多維陣列結構,支援多環境切換:
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "database_name";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
建立 test 環境群組:
$db['test']['hostname'] = "localhost";
$db['test']['username'] = "root";
$db['test']['password'] = "";
$db['test']['database'] = "database_name";
$db['test']['dbdriver'] = "mysql";
// ... 其他參數同 default
在配置檔中設定 $active_group = "test"; 即可切換環境。
透過 $active_record = TRUE/FALSE 全域啟用或停用。啟用後可使用鏈式語法簡化查詢;若專案不需此功能,設為 FALSE 可減少初始化資源消耗。注意:Session 等核心類別可能依賴 Active Record。