標籤:
在使用之前首先應該設定資料庫的參數,詳見檔案application/config/database.php,裡麵包含主機名稱,登陸使用者名稱,登入密碼,資料庫名,編碼資訊等。 在配置成功後,可以簡單的調用:$this->load->database();進行資料庫連結。 然後可以使用$this->db->query(),$this->db->insert()等方法對資料庫進行相應sql操作,例如下面給出的包含CI架構封裝查詢特性的相關語句:
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; $this->db->query($sql, array(3, ‘live‘, ‘Rick‘));
上面語句先定義好sql操作,然後進行查詢,這裡包含的所謂“封裝查詢”是指,在sql語句中一些參量先不定義,用?替代,然後再調用query方法時在第二參數array中添加依次對應的參量。
query() 函數以object(對象)的形式返回一個資料庫結果集. 當使用 "read" 模式來執行查詢時, 你可以使用“顯示你的結果集”來顯示查詢結果; 當使用 "write" 模式來執行查詢時, 將會僅根據執行的成功或失敗來返回 TRUE 或 FALSE. 當你需要將返回的結果賦值給一個自訂變數的時候, 你可以這樣操作:
$query = $this->db->query(‘YOUR QUERY HERE‘);
然後可以使用 $query->result(),$query->row()等方法取得查詢的結果。詳見CI手冊。
下面舉一個項目中遇到的例子:
$sql = "update al set tadl_CorrectState = 0 , tadl_noPunchCardResult= ‘‘ from t_ttm_vacationinfo vi inner join T_Employee te on te.EmpUID = vi.vi_empuid inner join workAttendance.dbo.t_Attendance_log al on al.tadl_salarysn = te.SalarySN and CAST(al.tadl_date as DATE) between CAST(vi.vi_startdate as DATE) and CAST(vi.vi_enddate as DATE) where vi.vi_uid = ? ";$status3 = $this->db->query( $sql , array( $et_uid ) );
裡面本質與上面簡單例子一致,只是包含了更多的sql語句的特性,(資料庫為sql server) 舉例如下:
1. 別名。sql提供別名的特性,許多時候我們給表起名字的時候由於要良好的區分表以及彰顯表的內容一般會起的比較複雜,例如上面這句sql中的 t_ttm_vacationinfo可想而知代表的是請假相關的資訊,但由於名字較長,如果在sal語句中一直使用本名,會導致sql冗長,所以有了上面的“ t_ttm_vacationinfo vi”,意思即為別名。
2.連接。sql提供串連操作,包括inner join, left join, right join 其中inner join表示兩個表需要至少包含一個匹配才可以返回相關行。如上例中採用了三個表之間進行連接,連接時用“on”關鍵字,聲明了應該具有的匹配欄位。
3. CAST函數。CAST()用於將某種資料類型的運算式顯式轉換為另一種資料類型。如上例中轉換成日期格式的。
php的CI架構相關資料庫操作