移除URL中的index.php开启Apache的mod_rewrite模块,在项目目录中新建.htaccess 文件,添加如下内容RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.)$ index.php/$1 [L]获取CI超级对象$CI = & get_instance()$version_id = $CI->config->item(“version_id”);使用辅助函数一般情况下,辅助函数位于 system/helpers 或者 application/helpers 目录 目录下。加载 URL 辅助函数 ,它的文件名为 xxx_helper.phppublic 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,然后在文件中添加或重写函数。https://codeigniter.org.cn/user_guide/general/helpers.html设置自定义前缀用于扩展辅助函数的文件名前缀和扩展类库和核心类是一样的。要自定义这个前缀,你可以打开 application/config/config.php 文件然后找到这项:$config[‘subclass_prefix’] = ‘MY_’;使用codeigniter类库所有的系统类库都位于 system/libraries/ 目录下,大多数情况下,在使用之前, 你要先在 控制器 中初始化它,使用下面的方法//加载类库$this->load->library(’encrypt’);//使用加载的类库$tt = $this->encrypt->encode(‘123’,‘132’);创建自己的类库自定义的类库文件应该放置在 application/libraries 目录下,当你初始化类时,CodeIgniter 会在这个目录下寻找这些类。备注:文件名首字母必须大写,例如:Myclass.php类名定义首字母必须大写,例如:class Myclass类名和文件名必须一致例如<?phpclass Someclass{ public function some_class($data) { return md5($data); }}使用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 , 然后定义你的类<?phpclass MY_Email extends CI_Email{ //}替换原生类库要替换原类库文件,只需定义与原生的类库命名完全一样,例如, 要替换掉原生的 Email 类的话,你要新建一个 application/libraries/Email.php 文件, 然后定义定义你的类:<?phpclass CI_Email { //}更多参考https://codeigniter.org.cn/user_guide/general/creating_libraries.html控制器控制器文件保存到 application/controllers/ 目录下。控制器命名规则1.文件名
必须是大写字母开头,如:‘Demo.php’ 。2.类名
必须以大写
字母开头。示例:<?phpdefined(‘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<?phpclass 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// 使用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);操作cookie// 加载辅助函数$this->load->helper(‘cookie’);// 添加cookiesetcookie(“name”, ’lds’, 86500);// or$this->input->set_cookie(“name”, ’lds’, 60);// 获取cookie$name = get_cookie(’name’);// 删除一条 Cookiedelete_cookie(’name’);// 删除多条 Cookiedelete_cookie([’name’, ’email’]);