開啓Apache的mod_rewrite模塊,在項目目錄中新建.htaccess 文件,添加以下內容php
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
$CI = & get_instance() $version_id = $CI->config->item("version_id");
通常狀況下,輔助函數位於 system/helpers 或者 application/helpers 目錄 目錄下。
加載 URL 輔助函數 ,它的文件名爲 xxx_helper.phphtml
public function use_help() { //加載單個 $this->load->helper('url'); //加載輔助函數,單個或多個 // 路徑:application\helpers\demo_helper.php 和 application\helpers\test_helper.php // $this->load->helper(['demo','test']); echo site_url(); echo base_url(); }
擴展輔助函數
要擴展原始的 數組輔助函數 ,首先你要建立一個文件 application/helpers/MY_array_helper.php,而後在文件中添加或重寫函數。mysql
https://codeigniter.org.cn/user_guide/general/helpers.html
設置自定義前綴
用於擴展輔助函數的文件名前綴和擴展類庫和核心類是同樣的。要自定義這個前綴,你能夠打開 application/config/config.php 文件而後找到這項:sql
$config['subclass_prefix'] = 'MY_';
全部的系統類庫都位於 system/libraries/ 目錄下,大多數狀況下,在使用以前, 你要先在 控制器 中初始化它,使用下面的方法數據庫
//加載類庫 $this->load->library('encrypt'); //使用加載的類庫 $tt = $this->encrypt->encode('123','132');
自定義的類庫文件應該放置在 application/libraries 目錄下,當你初始化類時,CodeIgniter 會在這個目錄下尋找這些類。
備註:數組
文件名首字母必須大寫,例如:Myclass.php 類名定義首字母必須大寫,例如:class Myclass 類名和文件名必須一致
例如cookie
<?php class Someclass { public function some_class($data) { return md5($data); } }
使用session
public function use_custom_library() { //建立自定義類庫 $this->load->library('someclass'); echo $this->someclass->some_class(x);//目錄:libraries/service/emr.php,例如:$this->load->('service');調用$this->service->emr->some_fun(); }
要擴展原生的類庫,只須要新建一個文件,以MY_開頭
並繼承原類庫
便可,示例:要擴展原Email類庫,只需命名爲 application/libraries/MY_Email.php , 而後定義你的類app
<?php class MY_Email extends CI_Email { // }
要替換原類庫文件,只需定義與原生的類庫命名徹底同樣,例如, 要替換掉原生的 Email 類的話,你要新建一個 application/libraries/Email.php 文件, 而後定義定義你的類:ide
<?php class CI_Email { // }
更多參考
https://codeigniter.org.cn/user_guide/general/creating_libraries.html
控制器文件保存到 application/controllers/ 目錄下。控制器命名規則
1.`文件名`必須是大寫字母開頭,如:'Demo.php' 。 2.`類名`必須以`大寫`字母開頭。
示例:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
模型類位於你的 application/models/ 目錄下。
模型命名規則
1.類名的第一個字母 必須`大寫`,其他部分小寫。 2.文件名和類名應該一致。
例如,建立一個Demo_model.php,路徑:applicationmodelsDemo_model.php
<?php class Demo_model extends CI_Model { //對應表中的字段 public $name; public $age; public $addr; /** * 返回最後兩條記錄 * @return mixed */ public function get_last_two_record() { $query = $this->db->get('demo', 2); return $query->result_array(); } /** * 插入記錄 */ public function insert_record($data) { $this->name = $data['name']; $this->age = $data['age']; $this->addr = $data['addr']; $this->db->insert('demo', $this); } /** * 更新記錄 */ public function update_record($data) { $this->name = $data['name']; $this->age = $data['age']; $this->addr = $data['addr']; $this->db->update('demo', $this, array('id' => $data['id'])); } }
在控制器調用
class demo extends CI_Controller { public function use_model() { $data = [ 'name' => 'Daiod', 'age' => 24, 'addr' => 'Chigo', // 'id' => 8 ]; //加載model $this->load->model('demo_model'); // $this->load->model('demo/test','demoModel'); //若是model下有子目錄,則$this->load->model('xxx/xxx'); //給model定義別名 $this->load->model('demo_model','demoModel'); //調用model中的方法 $this->model_name->method(); // $res = $this->demo_model->get_last_two_record(); $res = $this->demoModel->get_last_two_record(); print_r($res); //插入記錄 // $this->demo_model->insert_record($data); //使用demo_model的別名 // $this->demoModel->insert_record($data); //更新 // $this->demo_model->update_record($data); } }
修改config.php文件
/* |-------------------------------------------------------------------------- | Error Logging Threshold |-------------------------------------------------------------------------- | | You can enable error logging by setting a threshold over zero. The | threshold determines what gets logged. Threshold options are: | | 0 = Disables logging, Error logging TURNED OFF | 1 = Error Messages (including PHP errors) | 2 = Debug Messages | 3 = Informational Messages | 4 = All Messages | */ $config['log_threshold'] = 1; //默認爲0,這裏修改錯誤級別 error,debug,info
使用
public function log_write() { //打印日誌,與配置文件中設置錯誤級別對應 log_message('error', "this is error messages"); log_message('debug', "this is debug messages"); log_message('info', "this is debug messages"); echo "<br/>"; }
配置文件路徑:CodeIgniterapplicationconfigdatabase.php自動鏈接
,須要修改CodeIgniterapplicationconfigautoload.php文件,
$autoload['libraries'] = array(); //修改成 $autoload['libraries'] = array('database');
手動鏈接
$this->load->database();
查詢
public function select() { # 獲取表中全部記錄 $query = $this->db->get('demo'); //等價於 $query = $this->db->query("select * from demo"); //返回全部記錄的的數組 $data = $query->result_array(); //返回全部記錄的的數組對象 $data = $query->result(); //條件查詢 $data = $this->db->select('name', 'addr') ->from('demo') ->where('name = \'xiaoli\'') // ->where('id >=', 1) ->limit(2) ->order_by('age') ->get() ->result_array();//返回數組 //where條件 //where(array('name'=>'mary', 'id >'=>'1')); 表示name字段值是mary而且id字段值是1 //where('name', 'mary')或where('name =', 'mary'); 表示查詢條件是name字段值是mary //row() 只返回一行記錄,返回的是一個對象 $data = $query->row(); #row_array() 只返回一行記錄,返回的是一個數組 $data = $query->row_array(); //num_rows() 返回查詢結果行數 $data = $query->num_rows(); //num_fields() 返回查詢請求的字段個數 $data = $query->num_fields(); //free_result() 釋放當前查詢所佔用的內存並刪除關聯資源標識 $data = $query->free_result(); print_r($data); #返回最後運行的查詢Sql語句 echo $this->db->last_query(); //select * from demo #獲取插入的自增Id echo $this->db->insert_id(); //寫入和更新操做被影響的行數 echo $this->db->affected_rows(); //返回指定表的總行數 echo $this->db->count_all('demo'); //輸出當前的數據庫版本號 echo $this->db->version(); //輸出當前的數據庫平臺 echo $this->db->platform(); //mysqli //查詢語句 $this->db->select('column1','column2'); //選擇查詢的字段 $this->db->get('table_name'); //表示SELECT * FROM table_name $this->db->get('table_name', 10, 20); //參數2表示每頁記錄數(limit),參數3表示偏移(offset),SELECT * FROM table_name LIMIT 20, 10 $this->db->select_max();//可接受兩個參數,參數2表示別名 $this->db->select_min();//同上 $this->db->select_avg();//同上 $this->db->select_sum();//同上 $this->db->from('table_name');//選擇表名 $this->db->join('table2','table2.pid=table.id','left');//$this->db->from('table1'); $this->db->get_where(); //示例 $this->db->get_where('table_name', array('id' => $id), $limit, $offset); $this->db->where('字段','值');// where 字段 = '值';或者where('id >',2); $this->db->or_where();//子句OR 鏈接 $this->db->where_in('xx',['xx','xx']);// where_in('username',['Joe','Lucy','Lily']); $this->db->or_where_in('xx',['xx','xx']); $this->db->where_not_in(); $this->db->or_where_not_in(); $this->db->like('title','match');// where title like '%match%';參數3表示before(%match),after(match%),none(match)默認爲both //示例 $array = array('title' => $match, 'page1' => $match, 'page2' => $match); $this->db->like($array); // WHERE title LIKE '%match%' AND page1 LIKE '%match%' AND page2 LIKE '%match%' $this->db->or_like(); //OR鏈接 $this->db->not_like(); $this->db->or_not_like(); $this->db->group_by(); $this->db->distinct(); $this->db->having(); $this->db->or_having(); $this->db->order_by(); $this->db->limit(); $this->db->count_all_results(); }
插入
public function add() { //插入數據,被插入的數據會被自動轉換和過濾,例如: $data = array('name' => "xiaoming", 'age' => 23, 'addr' => 'chognqing'); $this->db->insert('demo', $data);//insert_batch()插入多條,$data爲二維數組 }
更新
public function update() { // $data = array('name' => 'xiaoming', 'age' => 26, 'addr' => 'shanghai'); // $where = "name = 'xiaoming'"; // $this->db->update('demo', $data, $where);//demo爲表名 //或者 // $this->db->where('id', 6); // $this->db->update('demo', $data); //或者 $this->db->set('key','value'); $data = ['name' => 'nihao']; $bool = $this->db->update('demo', $data, ['id' => 3]); //update_batch() //修改id爲3的記錄name修改成nihao var_dump($bool);//成功則返回TURE }
刪除
public function del() { // $this->db->where('id', 6); // $this->db->delete('demo'); //等價於 $bool = $this->db->delete('demo',array('id'=>5));//返回布爾值 }
// 使用session $this->load->library('session'); // 設置session $data = array( 'username' => 'johndoe', 'email' => 'johndoe@some-site.com', 'logged_in' => TRUE ); // 設置時間, 也可在config.php中設置 $this->session->sess_expiration = '14400'; // 僅添加一個值 $this->session->set_userdata('info', $data); // 添加多個值 // $this->session->set_userdata($data); // 檢查某個 session 值是否存在 $this->session->has_userdata('info'); // 獲取session $info = $this->session->userdata('info'); // or $info = $this->session->info; // 刪除單個session $this->session->unset_userdata('info'); // 同時刪除多個值 // $array_items = array('username', 'email'); // $this->session->unset_userdata($array_items);
// 加載輔助函數 $this->load->helper('cookie'); // 添加cookie setcookie("name", 'lds', 86500); // or $this->input->set_cookie("name", 'lds', 60); // 獲取cookie $name = get_cookie('name'); // 刪除一條 Cookie delete_cookie('name'); // 刪除多條 Cookie delete_cookie(['name', 'email']);