如下內容從兄弟連的CI教學視頻中摘抄:php
http://codeigniter.org.cn/tutorials/sql
-----------------------------------------------------------------------------------------------數據庫
Codeigniter框架設計模式
-----------------------------------------------------------------------------------------------數組
講師:鄒義良瀏覽器
微博:weibo.com/it266app
-----------------------------------------------------------------------------------------------框架
主要內容ide
CI簡介函數
深刻MVC設計模式
CI中的控制器與視圖
CI中的超級對象
數據庫訪問
AR模型
如何擴展CI的控制器
模型
url相關函數
設置路由
分頁
文件上傳
Session
驗證碼
表單驗證
-----------------------------------------------------------------------------------------------
CI是什麼?
CodeIgniter是一個輕量級但功能強大的PHP框架
基於MVC設計模式,提供了一套豐富的類庫
簡單易學,高效實用
官方網站
www.codeigniter.com
中文網站
http://codeigniter.org.cn
下載當前最新版本
CodeIgniter_2.1.4.zip
(截止2015.7.1最新版爲3.0.0——筆者注)
有什麼特色?
你想要一個小巧的框架
你須要出色的性能
你須要普遍兼容標準主機上的各類 PHP 版本和配置
CI 2.1.4 須要PHP5.1.6
你想要一個幾乎只需 0 配置的框架
你想要一個不需使用任何命令符的框架
你想要一個不需堅守限制性編碼規則的框架
你不但願被迫學習一門模板語言(雖然能夠選擇你喜歡的模板解析器)
你不喜歡複雜,熱愛簡單
你須要清晰,完整的文檔
目錄結構說明
license.txt 許可協議
user_guide 用戶手冊
syste 框架核心文件
application 應用目錄
index.php 入口文件
-----------------------------------------------------------------------------------------------
MVC
1.入口文件
惟一一個讓瀏覽器直接請求的腳本文件
2.控制器
協調模型和視圖
3.模型
提供數據,保存數據
4.視圖
只負責顯示
表單...
5.動做action
是控制器中的方法,用於被瀏覽器請求
CI中的MVC
訪問url使用的是pathinfo
入口文件.php/控制器/動做
application目錄中:
controllers 控制器
models 模型
views 視圖
默認控制器是welcome
默認動做是index
控制器
1.不須要加後綴
2.文件名所有小寫 例如 user.php
3.全部的控制器,直接或間接繼承自CI_Controller類
4.控制器中,對動做(方法)要求:
public
不能以_開頭
視圖
1.在控制器中若是加載視圖
//直接寫視圖名字,不寫擴展名,若是有子目錄,則寫上目錄名
2.視圖中,直接使用原生PHP代碼
3.推薦使用
<?php foreach($list as $item);?>
<?=$item['name']?>
<?php endforeach;?>
超級對象
當前的控制器對象
提供了不少屬性:
$this->load
裝載器類的實例 system/core/loader.php
裝載器類提供的方法:
view() 裝載視圖
vars() 分配變量到視圖
database() 裝載數據庫操做對象
model() 裝載模型對象
helper()
$this->uri
是CI_URI類的實例 system/core/URI.php
CI_URI類提供的方法:
segment()用於獲取uri中的參數
傳統的:入口文件.php/控制器/動做/參數1/值1/參數2/值2
入口文件.php/控制器/動做/值1/值2
echo $this->segment(3);//值1
echo $this->segment(4);//值2
//index.php/控制器/index/6
public function index($p=0){ echo $p;//輸出6
}
$this->input
輸入類
是CI_URI類的實例 system/core/input.php
CI_URI類提供的方法:
$this->input->post('username'); //等價於$_POST['username'];
$this->input->server('DOCUMENT_ROOT'); //等價於$_SERVER['DOCUMENT_ROOT'];
$this->input->server('REMOTE_ADDR');
在視圖中,直接用$this來訪問超級對象中的屬性
數據庫訪問
修改配置文件
application/config/database.php
將數據庫訪問對象 裝載到超級對象的屬性中 $this->db
$this->load->query($sql);//返回對象
$res=$this->db->query($sql);//返回對象
$res->result();//返回數組,數組中是一個一個的對象
$res->result_array();//返回二維數組,裏面是關聯數組
$res->row()//返回第一條數據,直接是一個對象
參數綁定
$sql="select * from blog_user where name=?";
$this->db->query($sql,$name);//若是有多個問號時,須要傳入一個索引數組
表前綴
$db['default']['dbprefix'] = 'new_';
$db['default']['swap_pre'] = 'swap_';
配置爲同樣,代碼中,直接硬編碼表前綴就好了,若是之後項目數據庫表前綴發生變化,
只須要修改$db['default']['dbprefix'] = 'new_';代碼中的swap_會自動替換爲new_
db的自動加載
application\config\autoload.php
$autoload['libraries'] = array(database);
不須要:$this->load->database();
取自增id
$this->db->insert_id();
受影響行數
$this->db->affected_rows();
Active record
1.application/config/database.php
確保$active_record = TRUE;
2.application/config/autoload.php
$autoload['libraries'] = array(database);
3.在配置文件中,正確配置表前綴後,會自動添加
$res->$this->db->get('表名');//返回結果集對象
$res->result();
$bool=$this->db->insert('表名',關聯數組);
$bool=$this->db->update('表名',關聯數組,WHERE條件);
$bool=$this->db->delete('表名',WHERE條件);
//select uid,username from user where uid>=3 order by uid desc limit 2,3
$res=$this->db->select('uid,username')
->from('user')
->where('uid >=',1)
->limit(3,2)//跳過2條,取出3條數據
->order_by('uid desc')
->get();
//顯示最進一條sql語句
echo $this->db->last_query();
//where
//$res=$this->db->where('username','marry')->get('user');
//$res=$this->db->where('username !=','marry')->get('user');
//$res=$this->db->where('username','marry')->get('user');
$res=$this->db->where(array('username'=>'hanyile','uid <'=>3))->get('user');
echo $this->db->last_query();
複雜的查詢請用$this->db->query($sql,$data);//使用問號綁定查詢
擴展CI控制器
application/core/MY_Controller.php
控制器就能夠繼承自MY_Controller
application/config/config.php
$config['subclass_prefix'] = 'MY_';
模型
在模型中,能夠直接使用超級對象中的屬性