幸福

如人饮水,冷暖自知

CodeIgniter之蚂蚁学习笔记

// 控制器名称命名方式
文件名:page.php
类名定义:class Page extends CI_controller

// 模板的输出方式
$this->load->view(‘pages/test’);

// 加载公共模板
$this->load->view(‘templates/header’, $data);
$this->load->view(‘templates/footer’, $data);

// 加载Model
$this->load->model(‘home/cate_model’);

// 输出最后一条SQL语句
echo $this->db->last_query();

// 调试SQL,将所有SQL语句输出到文本,修改DB_driver.php 文件  262 行
file_put_contents(“ci_log.txt”, date(“H:i:s”,time()).”\r\n”.$sql.”\r\n\r\n” ,FILE_APPEND);

// 教程-创建新闻条目-创建一个表单
这里只有两个东西可能你不熟悉,一个是 form_open() 函数,一个是 validation_errors() 函数。

第一个由 表单辅助函数 提供,用来提供表单元素和一些额外功能,例如添加隐藏的 安全类。第二个用来报告表单验证中出现的错误信息。

回到新闻控制器,在这里你需要做两件事,一件是检查表单是否被提交了,另一件是检查提交的数据是否能够通过验证规则。你需要用到 表单验证 库来做这些。

// MODEL查询
$query = $this->db->get(‘entries’, 10);
return $query->result();

// MODEL添加数据
$this->title   = $_POST[‘title’]; // 请阅读下方的备注
$this->content = $_POST[‘content’];
$this->date    = time();

$this->db->insert(‘entries’, $this);

// MODEL更新数据
$this->title   = $_POST[‘title’];
$this->content = $_POST[‘content’];
$this->date    = time();

$this->db->update(‘entries’, $this, array(‘id’ => $_POST[‘id’]));

上面用到的函数是 Active Record 数据库函数
备注: 为了简单一点,我们直接使用了$_POST。不过,这不太好,平时我们应该使用 输入类:$this->input->post(‘title’)

// 控制器中载入模型
$this->load->model(‘Model_name’);

// 模型在子文件夹下的载入方式
$this->load->model(‘blog/queries’);

// 自动载入模型
如果您需要一个在整个项目中都起作用的特定模型,您可以让 CodeIgniter 在初始化时自动装载它。实现的方法是打开 application/config/autoload.php 文件,然后在自动装载数组中添加上这个模型。

// 连接到数据库
当一个模型被载入时,它并不会自动连接数据库。以下方法可以使您连接数据库:
您可以把第三个参数设置为TRUE来使模型装载函数自动连接数据库,连接配置可以在您的数据库配置文件中可以定义:
$this->load->model(‘Model_name’, ”, TRUE);
或者在MODEL里面加上:
function __construct() {
parent::__construct();
$this->load->database();
}

// 如果你想一次载入多个辅助函数,你可以这样做:
$this->load->helper( array(‘helper1’, ‘helper2’, ‘helper3’) );

// 使用 CodeIgniter 类库
所有的类库文件存放在system/libraries 文件夹。大多数情况下你需要预先在controller中初始化后才能使用它们:
例如,要载入“表单验证类”,你可以这样做:
$this->load->library(‘form_validation’);

手册看到:常见主题->创建自己的类库

超级对象
当前的控制器对象
提供了许多属性:
$this->load
装载器类的实例system/core/Loader.php
装载器提供的方法:
view()    装载视图
vars()    分配变量到视图
database()    装载数据库操作对象
model()    装载模型对象
helper()    辅助函数

$this->uri
是CI_URI 类的实例 system/core/URI.php
CI_URI类提供的方法
segment(n)    用于获取url中的第n个参数
echo $this->uri->segment(4); // 获取地址栏参数
入口文件.php/控制器/动作/参数1/参数2
传统的pathinfo:
入口文件.php/控制器/动作/参数1/值1/参数2/值2

$this->input
输入类
是CI_INPUT类的实例 system/core/Input.php
CI_INPUT类提供的方法
$this->input->post(‘username’);    // 等价于  $_POST[‘username’];
$this->input->server(‘DOCUMENT_ROOT’);    // 等价于 $_SERVER[‘DOCUMENT_ROOT’];

在视图中,可以直接用$this来访问超级对象中的属性

数据库访问:
修改配置文件
application/config/databases.php

将数据库访问对象,装载到超级对象的属性中 $this->db
$this->load->databse;
$res = $this->db->query($sql);    // 返回对象
$res->result();    // 返回数组,数组中是一个一个的对象
$res->result_array();    // 返回二维数组,里面是关联数组
$res->row();    // 返回第一条记录,直接是一个对象

$sql = “insert into 。。。。”;
$bool = $this->db->query($sql);
if($bool) {
echo ‘受影响行数:’.$this->db->affected_rows();    // 等价于 mysql_affected_rows
echo ‘自增ID:’.$this->db->insert_id();    // 等价于mysql_insert_id
}

//数据插入
$data[0] = ‘lili’;
$data[1] = ‘123’;
$sql = “insert into blog_user (name,pwd) values (?,md5(?))”;  // 通常用查询的时候,才这样用,插入在AR中实现
$bool = $this->db->query($sql,$data);
if($bool) {
echo ‘受影响的行数:’.$this->db->affected_rows();
echo ‘自增ID:’.$this->db->insert_id();
}

参数绑定:
$sql = “select * from blog_user where name = ?”;
$this->db->query($sql,$name); // 如果有多个问号时,需要传入一个索引数组

标前缀:
在配置文件进行配置
$db[‘default’][‘dbprefix’] = ‘blog_’;
$db[‘default’][‘swap_pre’] = ‘blog_’;
配置为一样,代码中,直接硬编码表前缀就行了

db的自动加载:
application/config/autoload.php
$autoload[‘libraies’] = 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(‘表名’,关联数组,条件);
示例:
$data = array(
’email’    =>    ‘mary@gmail.com’,
‘password’    =>    ‘11111’
);
$this->db->update(‘user’,$data,array(‘id’=>3));

$bool = $this->db->delete(‘表名’,关联数组);
示例:
$this->db->delete(‘user’,array(‘id’=>3));

连贯操作:
$this->db->select(‘id,name’)    // 字段
->from(‘表名’)
->where(‘id >= ‘,3)
->limit(2,3)
->order_by(‘id desc’)
->get();

// where
// $res = $this->db->where(‘name’,’mary’)->get(‘user’);
// $res = $this->db->where(‘name !=’,’mary’)->get(‘user’);
// $res = $this->db->where(array(‘name’=>’mary’))->get(‘user’);
// $res = $this->db->where(array(‘name’=>’mary’,’id >’=>2))->get(‘usr’);
复杂的查询,请用$this->db->query($sql,$data); // 使用问号绑定参数

【扩展CI控制器】   ############################################
application\core\MY_controller.php
控制器就可以继承MY_controller

application/config/config.php
$config[‘subclass_prefix’] = ‘MY_’;

【模型】(文件命名需要全小写)   ############################################
在模型中,可以直接使用超级对象的属性
cate_model.php   class Cate_model extends CI_Model {}
// 加载模型,加载完后自动成为超级对象的属性
$this->load->model(‘User_model’);
// 别名
$this->load->model(‘User_model’,’user’);
$list = $this->user->getAll();
// 调用模型获取数据
$list = $this->User_model->getAll();
// 加载视图
$this->load->view(‘home/index/index’,array(‘list’=>$list));

return $query->row_array();    // 一维数组
return $query->result();    // 二维数组

1.加载session类

$this -> load -> library(‘sesion’);
2.创建session

$this -> session -> set_userdata($array);
3.查看session

$this -> session -> userdata(session名);
4.删除session

$this -> session -> unset_userdata(session名);

表单验证不用框架自带的,可以使用JQUERY表单验证插件

echo md5(uniqid());    生成一个随机字符串作为加密用的key

//一次性的数据,只能读取一次
$this->session->set_flashdata(‘test’,’aaaaaa’);
//下次刷新就没有了
$test = $this->session->flashdata(‘test’);
echo $test;

【路由】   ############################################
application/config/routes.php
//默认控制器
$route[‘default_controller’] = ‘welcome’;
// 添加自定义的路由规则
// http://localhost/ci/index.php/news/201410/4.html
$route[‘news/[\d]{6}/([\d]+)\.html’] = ‘article/show/$1’;

【URL相关函数】   ############################################
$this->load->helper(‘url’);
//可以根据需要配置自动加载,选择性的自动加载,否则加载愈多则性能愈慢
地址:application/config/autoload.php
配置:$autoload[‘helper’] = array(‘url);
site_url(“控制器/方法”);
base_url 返回网站根目录



去打赏

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注